public class RethrowExample {
public static void main(String[] args) {
try {
performOperation();
} catch (CustomException e) {
System.out.println("メインメソッド: " + e.getMessage());
}
}
static void performOperation() throws CustomException {
try {
// 何らã‹ã®æ“作を試ã¿ã‚‹
} catch (Exception e) {
// CustomExceptionã«å¤‰æ›ã—ã¦å†ã‚¹ãƒãƒ¼ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’追åŠ
// エラーメッセージã®ç”Ÿæˆ
String errorMessage = "performOperation メソッド内ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ";
// CustomExceptionオブジェクトã®ä½œæˆ
CustomException customException = new CustomException(errorMessage, e);
// æ–°ã—ã生æˆã—㟠CustomException ã‚’å†ã‚¹ãƒãƒ¼
throw customException;
}
}
}
class CustomException extends Exception {
// カスタム例外クラスã®å®£è¨€
// コンストラクタã«ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¨å…ƒã®ä¾‹å¤–を渡ã™
public CustomException(String message, Throwable cause) {
super(message, cause);
}
}
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã¯ã€performOperation メソッド内ã§ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸå ´åˆã«ã€ãれを CustomException ã«å¤‰æ›ã—ã¦å†ã‚¹ãƒãƒ¼ã™ã‚‹ä¾‹ã‚’示ã—ã¦ã„ã¾ã™ã€‚ã“れã¯ã€Œä¾‹å¤–ã®å†ã‚¹ãƒãƒ¼ã€ã®ä¸€ä¾‹ã§ã™ã€‚
catch (Exception e)ブãƒãƒƒã‚¯: ã“ã®ãƒ–ãƒãƒƒã‚¯ã§ã¯ã€ä½•らã‹ã®æ“作を試ã¿ã‚‹ä¸ã§ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸå ´åˆã«å®Ÿè¡Œã•れã¾ã™ã€‚ã“ã®ä¾‹å¤–ã¯Exceptionåž‹ã®å¤‰æ•°eã«æ•æ‰ã•れã¾ã™ã€‚String errorMessage = "performOperation メソッド内ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ";: エラーメッセージã®ç”Ÿæˆã§ã™ã€‚ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯CustomExceptionã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã«æ¸¡ã•れã¾ã™ã€‚CustomException customException = new CustomException(errorMessage, e);: æ–°ã—ã„CustomExceptionオブジェクトを生æˆã—ã¾ã™ã€‚ã“ã®éš›ã€å…ˆã»ã©ç”Ÿæˆã—ãŸã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¨å…ƒã®ä¾‹å¤–eã‚’ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã«æ¸¡ã—ã¾ã™ã€‚throw customException;: 生æˆã—ãŸCustomExceptionã‚’å†ã‚¹ãƒãƒ¼ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€å…ƒã®ä¾‹å¤–ãŒCustomExceptionã«å¤‰æ›ã•れã€CustomExceptionãŒå‘¼ã³å‡ºã—å…ƒã«ä¼æ’ã•れã¾ã™ã€‚
ã“ã®ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã§ã€performOperation メソッドを呼ã³å‡ºã™å´ã§ CustomException ã‚’æ•æ‰ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
å†ã‚¹ãƒãƒ¼
「å†ã‚¹ãƒãƒ¼ã€ï¼ˆrethrow)ã¯ã€ä¾‹å¤–ã‚’ã‚ャッãƒã—ã¦ãれを直接処ç†ã›ãšã€å†ã³ã‚¹ãƒãƒ¼ã™ã‚‹ã“ã¨ã‚’指ã—ã¾ã™ã€‚ã“れã¯é€šå¸¸ã€ä¾‹å¤–ã®ç¨®é¡žã‚’変更ã—ãŸã‚Šã€ä¾‹å¤–ã®æƒ…å ±ã‚’è¿½åŠ ã—ãŸã‚Šã™ã‚‹å ´åˆã«ä½¿ç”¨ã•れã¾ã™ã€‚以下ã«ã€æä¾›ã•れãŸãƒ—ãƒã‚°ãƒ©ãƒ ã®ã€Œå†ã‚¹ãƒãƒ¼ã€ã«ã¤ã„ã¦ã®è§£èª¬ã‚’示ã—ã¾ã™ã€‚
static void performOperation() throws CustomException {
try {
// 何らã‹ã®æ“作を試ã¿ã‚‹
} catch (Exception e) {
// CustomExceptionã«å¤‰æ›ã—ã¦å†ã‚¹ãƒãƒ¼ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’追åŠ
// エラーメッセージã®ç”Ÿæˆ
String errorMessage = "performOperation メソッド内ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ";
// CustomExceptionオブジェクトã®ä½œæˆ
CustomException customException = new CustomException(errorMessage, e);
// æ–°ã—ã生æˆã—㟠CustomException ã‚’å†ã‚¹ãƒãƒ¼
throw customException;
}
}
ã“ã® performOperation メソッドã§ã¯ã€ä»¥ä¸‹ã®æ‰‹é †ã«å¾“ã£ã¦å†ã‚¹ãƒãƒ¼ãŒè¡Œã‚れã¦ã„ã¾ã™ï¼š
tryブãƒãƒƒã‚¯å†…ã§ä½•らã‹ã®æ“作ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ã“ã®æ“作ã§ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚catch (Exception e)ブãƒãƒƒã‚¯: 例外ãŒç™ºç”Ÿã—ãŸå ´åˆã€ã“ã®ãƒ–ãƒãƒƒã‚¯ãŒå®Ÿè¡Œã•れã¾ã™ã€‚Exceptionåž‹ã®å¤‰æ•°eã§ä¾‹å¤–ã‚’æ•æ‰ã—ã¾ã™ã€‚String errorMessage = "performOperation メソッド内ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ";: エラーメッセージを生æˆã—ã¾ã™ã€‚ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯CustomExceptionã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã«æ¸¡ã•れã¾ã™ã€‚CustomException customException = new CustomException(errorMessage, e);: æ–°ã—ã„CustomExceptionオブジェクトを生æˆã—ã¾ã™ã€‚エラーメッセージã¨å…ƒã®ä¾‹å¤–eãŒã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã«æ¸¡ã•れã¾ã™ã€‚throw customException;: 生æˆã—ãŸCustomExceptionã‚’å†ã‚¹ãƒãƒ¼ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€å…ƒã®ä¾‹å¤–ãŒCustomExceptionã«å¤‰æ›ã•れã€å‘¼ã³å‡ºã—å…ƒã«ä¼æ’ã•れã¾ã™ã€‚
å†ã‚¹ãƒãƒ¼ã®åˆ©ç‚¹ã¯ã€å‘¼ã³å‡ºã—å…ƒãŒç‰¹å®šã®ä¾‹å¤–ã«å¯¾ã—ã¦ã®ã¿å‡¦ç†ã‚’行ã†ã“ã¨ãŒã§ãるよã†ã«ã™ã‚‹ã“ã¨ã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€å‘¼ã³å‡ºã—å…ƒãŒã‚ˆã‚Šå…·ä½“çš„ãªä¾‹å¤–ã«å¯¾å‡¦ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚例外ã®ç¨®é¡žã‚„内容を変更ã›ãšã«ã€ä¾‹å¤–ã®å‡¦ç†ã‚’より柔軟ã«åˆ¶å¾¡ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
「019 例外ã¨ä¾‹å¤–処ç†ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント