public class ExceptionPropagationExample {
public static void main(String[] args) {
try {
// メインメソッドã‹ã‚‰ä¾‹å¤–ãŒã‚¹ãƒãƒ¼ã•れるå¯èƒ½æ€§ãŒã‚ã‚‹ã®ã§ã€try-catchæ–‡ã§æ•æ‰ã™ã‚‹
methodA();
} catch (Exception e) {
System.out.println("メインメソッド: " + e.getMessage());
}
}
static void methodA() throws Exception {
// methodA ã¯ä¾‹å¤–をスãƒãƒ¼ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ã®ã§ã€throws節を使用ã—ã¦å‘¼ã³å‡ºã—å…ƒã«é€šçŸ¥
methodB();
}
static void methodB() throws Exception {
// methodB ã¯ä¾‹å¤–をスãƒãƒ¼ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ã®ã§ã€throws節を使用ã—ã¦å‘¼ã³å‡ºã—å…ƒã«é€šçŸ¥
methodC();
}
static void methodC() throws Exception {
// 例外をスãƒãƒ¼ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’追åŠ
// ã“ã“ã§ã¯ArithmeticExceptionをスãƒãƒ¼ã—ã€ãã®éš›ã«ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’è¨å®š
throw new ArithmeticException("methodC ã§ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸ");
}
}
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ を実行ã™ã‚‹ã¨ã€methodC ã§ç™ºç”Ÿã—㟠ArithmeticException ㌠methodBã€ã•らã«ã¯ methodA ã¾ã§ä¼æ’ã—ã€æœ€çµ‚çš„ã«ã¯ main メソッドã§ã‚ャッãƒã•れã¦ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒè¡¨ç¤ºã•れるã§ã—ょã†ã€‚ã“れã«ã‚ˆã‚Šã€ä¾‹å¤–ãŒã©ã®ã‚ˆã†ã«ä¼æ’ã™ã‚‹ã‹ã‚’確èªã§ãã¾ã™ã€‚
例外ã®ä¼æ’
「例外ã®ä¼æ’ã€ã¨ã¯ã€ãƒ—ãƒã‚°ãƒ©ãƒ 内ã§ä¾‹å¤–ãŒç™ºç”Ÿã—ã€ãã®ä¾‹å¤–ãŒãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰ãƒ¡ã‚½ãƒƒãƒ‰ã¸ã¨ä¼æ’ã—ã¦ã„ãプãƒã‚»ã‚¹ã®ã“ã¨ã‚’指ã—ã¾ã™ã€‚ã“ã®ãƒ—ãƒã‚»ã‚¹ã§ã¯ã€ä¾‹å¤–ãŒã‚¹ãƒãƒ¼ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ãŒã€ãã®ä¾‹å¤–を処ç†ã™ã‚‹ã®ã§ã¯ãªãã€å‘¼ã³å‡ºã—å…ƒã«ä¾‹å¤–を通知ã—ã€ä¸Šä½ã®å‘¼ã³å‡ºã—階層ã§ä¾‹å¤–ãŒå‡¦ç†ã•れるã“ã¨ãŒæœŸå¾…ã•れã¾ã™ã€‚
以下ã«ã€ä¾‹å¤–ã®ä¼æ’ã«é–¢ã™ã‚‹ä¸»ãªãƒã‚¤ãƒ³ãƒˆã‚’解説ã—ã¾ã™ã€‚
throws節ã®ä½¿ç”¨:
メソッド内ã§ç™ºç”Ÿã—ãŸä¾‹å¤–ã‚’ãã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å‘¼ã³å‡ºã—å…ƒã«é€šçŸ¥ã™ã‚‹ãŸã‚ã«ã€throws 節ãŒä½¿ç”¨ã•れã¾ã™ã€‚throws 節ã§ã¯ã€ãƒ¡ã‚½ãƒƒãƒ‰ãŒã‚¹ãƒãƒ¼ã™ã‚‹å¯èƒ½æ€§ã®ã‚る例外を宣言ã—ã¾ã™ã€‚
static void methodA() throws Exception {
// ...
}
try-catchæ–‡ã§ã®ä¾‹å¤–処ç†:
例外ãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ã®ã‚るメソッドを呼ã³å‡ºã™å ´åˆã€ãã®å‘¼ã³å‡ºã—元㧠try-catch 文を使用ã—ã¦ä¾‹å¤–ã‚’ã‚ャッãƒã—ã€é©åˆ‡ãªå‡¦ç†ã‚’行ã„ã¾ã™ã€‚
try {
methodA();
} catch (Exception e) {
// 例外ãŒç™ºç”Ÿã—ãŸå ´åˆã®å‡¦ç†
}
伿’ã®æ–¹å‘:
例外ã¯é€šå¸¸ã€ä¸‹ä½ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰ä¸Šä½ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¸ã¨ä¼æ’ã—ã¾ã™ã€‚例外ãŒç™ºç”Ÿã—ãŸãƒ¡ã‚½ãƒƒãƒ‰ãŒã€ãã®ä¾‹å¤–を処ç†ã§ããªã„å ´åˆã€å‘¼ã³å‡ºã—å…ƒã«ä¾‹å¤–ãŒä¼æ’ã—ã¾ã™ã€‚ã“ã®ãƒ—ãƒã‚»ã‚¹ãŒç¶šãã€æœ€çµ‚çš„ã«ã¯ãƒ—ãƒã‚°ãƒ©ãƒ 全体をカãƒãƒ¼ã™ã‚‹ã‚ˆã†ãªãƒˆãƒƒãƒ—レベルã®ã‚¨ãƒ©ãƒ¼ãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ãŒè¡Œã‚れã¾ã™ã€‚
throws節ã®é€£éŽ–:
メソッドAãŒãƒ¡ã‚½ãƒƒãƒ‰Bを呼ã³å‡ºã—ã€ãƒ¡ã‚½ãƒƒãƒ‰Bã§ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹å ´åˆã€ãƒ¡ã‚½ãƒƒãƒ‰Aã§ãã®ä¾‹å¤–を処ç†ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã“ã®ã¨ãã€ãƒ¡ã‚½ãƒƒãƒ‰Aã‚‚åŒæ§˜ã« throws 節を使用ã—ã¦å‘¼ã³å‡ºã—å…ƒã«ä¾‹å¤–を通知ã—ã¾ã™ã€‚
static void methodA() throws Exception {
methodB();
}
static void methodB() throws Exception {
// 例外ãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚る処ç†
}
例外ã®ä¼æ’ã¯ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®æ§‹é€ をより柔軟ã«ã—ã€ä¾‹å¤–を的確ã«å‡¦ç†ã§ãるよã†ã«ã™ã‚‹ãŸã‚ã«é‡è¦ãªæ¦‚念ã§ã™ã€‚ã—ã‹ã—ã€éŽåº¦ãªä¼æ’ã¯ã‚³ãƒ¼ãƒ‰ã‚’複雑ã«ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€æ…Žé‡ã«ç®¡ç†ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
「019 例外ã¨ä¾‹å¤–処ç†ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント