ExceptionUtil.java
public class ExceptionUtil {
public static void traceError(int[] array, int index, int divisor) {
try {
// 指定ã•れãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã®å€¤ã‚’å–り出ã—ã€å‰²ã‚Šç®—を行ã†
int value = array[index];
int result = value / divisor;
System.out.println("è¨ˆç®—çµæžœ: " + result);
} catch (Exception e) {
// エラー発生時ã«è©³ç´°æƒ…å ±ã‚’å‡ºåŠ›
System.out.println("エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ");
System.out.println("åŽŸå› : " + e.getMessage());
e.printStackTrace(); // スタックトレースを出力(開発用)
}
}
}
解説:例外ã®åŽŸå› ã‚’è¿½è·¡ã™ã‚‹3ã¤ã®æƒ…å ±
ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã§ã¯ã€ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸã¨ãã«ãã®è©³ç´°ã‚’ãƒã‚°å‡ºåŠ›ã™ã‚‹æ–¹æ³•ã‚’å¦ã³ã¾ã™ã€‚
1. 固定メッセージ
System.out.println("エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ");
ユーザーå‘ã‘ã‚„ãƒã‚°ç›£è¦–用ã®åŸºæœ¬çš„ãªã‚¢ãƒ©ãƒ¼ãƒˆè¡¨ç¤ºã€‚
2. getMessage() ã§åŽŸå› ã‚’è¦ç´„
System.out.println("åŽŸå› : " + e.getMessage());
/ by zeroã‚„Index 5 out of bounds for length 3ã®ã‚ˆã†ã«ã€ã‚¨ãƒ©ãƒ¼ã®ä¸»ãªå†…容を表示- ユーザーã¸ã®è¡¨ç¤ºã‚„ã€ç°¡æ˜“ãƒã‚°ã«å‘ã„ã¦ã„ã‚‹
3. printStackTrace() ã§æŠ€è¡“è€…å‘ã‘詳細ãƒã‚°
e.printStackTrace();
- 例外ãŒã€Œã©ã“ã§ç™ºç”Ÿã—ãŸã‹ã€ã¾ã§ã‚ã‹ã‚‹
- 開発ä¸ã®ãƒ‡ãƒãƒƒã‚°ã‚„ã€ãƒã‚°ãƒ•ァイルã¸ã®å‡ºåŠ›ã«æœ‰åй
- 本番環境ã§ã¯ãƒã‚°ãƒ©ã‚¤ãƒ–ラリ(Log4j ãªã©ï¼‰ã¨é€£æºã—ã¦ãƒ•ァイル出力ã™ã‚‹ã®ãŒä¸€èˆ¬çš„
出力例(エラー時)
エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ
åŽŸå› : / by zero
java.lang.ArithmeticException: / by zero
at ExceptionUtil.traceError(ExceptionUtil.java:5)
...
ã¾ã¨ã‚:ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã§å¦ã¶ã¹ãã“ã¨
- 例外発生時ã«ä½•ãŒèµ·ããŸã‹ã‚’ユーザーã«ã‚‚開発者ã«ã‚‚ä¼ãˆã‚‹æ‰‹æ®µã‚’æŒã¤ã“ã¨ãŒé‡è¦
getMessage()ã¨printStackTrace()を組ã¿åˆã‚ã›ã¦ã€é©åˆ‡ãªãƒ¬ãƒ™ãƒ«ã®æƒ…å ±æä¾›ãŒã§ãるよã†ã«ã™ã‚‹- 開発ç¾å ´ã§ã¯ã€ã“れらã®å‡ºåŠ›ã‚’ãƒã‚°ãƒ•ã‚¡ã‚¤ãƒ«ã«æ®‹ã™è¨è¨ˆãŒåŸºæœ¬
103 ステップアップå•題 「例外修羅é“ã€
Just Keep Typing, Baby!ã§ã¯ã€ã“ã®ã€Œä¾‹å¤–修羅é“ã€ã§ã¤ã¾ã¥ã„ãŸäººå‘ã‘ã®è§£èª¬ã‚’ã—ã¦ã„ã¾ã™ã€‚ã“ã¡ã‚‰ã‚‚ãœã²ï¼
// tesh:
// ã‚³ãƒ¼ãƒ‰ã¯æ›¸ã‘ãŸã€‚ã§ã‚‚ã€ãれã ã‘ã§çµ‚ã‚ã£ã¦ã„ã„ã®ã‹ï¼Ÿ
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™



コメント