import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
class CustomFileReadException extends Exception {
private int errorCode;
public CustomFileReadException(String message, int errorCode) {
super(message);
this.errorCode = errorCode;
}
public int getErrorCode() {
return errorCode;
}
}
public class FileDataReader {
public static void main(String[] args) {
String filePath = "sample.txt";
try {
processFile(filePath);
} catch (CustomFileReadException e) {
System.out.println("エラーコード: " + e.getErrorCode());
System.out.println("エラーメッセージ: " + e.getMessage());
}
}
static void processFile(String filePath) throws CustomFileReadException {
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line = reader.readLine();
// ä»®ã®æ¡ä»¶: ファイルã‹ã‚‰èªã¿å–ã‚‹ãƒ‡ãƒ¼ã‚¿ãŒæœŸå¾…ã•れる形å¼ã¨ç•°ãªã‚‹å ´åˆ
if (line == null || !line.contains("expected_pattern")) {
throw new CustomFileReadException("ファイルã®å½¢å¼ãŒæœŸå¾…ã•れるもã®ã¨ç•°ãªã‚Šã¾ã™", 1001);
}
// ファイルã®ãƒ‡ãƒ¼ã‚¿ã‚’処ç†ã™ã‚‹ãƒã‚¸ãƒƒã‚¯ã‚’ã“ã“ã«è¿½åŠ
System.out.println("ファイルデータ: " + line);
} catch (IOException e) {
// ファイルãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆ
throw new CustomFileReadException("ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“", 1002);
}
}
}
CustomFileReadExceptionクラスã¯ã€Exceptionクラスを継承ã—ã€ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¨ã‚¨ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰ã‚’ä¿æŒã™ã‚‹ã‚ˆã†ã«ã—ã¦ã„ã¾ã™ã€‚processFileメソッド内ã§ãƒ•ァイルã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’èªã¿å–る処ç†ã‚’行ã£ã¦ã„ã¾ã™ã€‚- ファイルã®ãƒ‡ãƒ¼ã‚¿ãŒæœŸå¾…ã•れる形å¼ã¨ç•°ãªã‚‹å ´åˆã€ã¾ãŸã¯ãƒ•ァイルãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã«ã€
CustomFileReadExceptionをスãƒãƒ¼ã—ã¦ã„ã¾ã™ã€‚ mainメソッドã§ä¾‹å¤–ãŒã‚ャッãƒã•れãŸå ´åˆã€ã‚¨ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰ã¨ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦ã„ã¾ã™ã€‚
ã“ã®ä¾‹ã§ã¯ã€ä»®ã®æ¡ä»¶ã¨ã—ã¦ãƒ•ァイルã®å½¢å¼ãŒç‰¹å®šã®ãƒ‘ターンをå«ã¾ãªã„å ´åˆã«ã‚¨ãƒ©ãƒ¼ã¨ã—ã¦ã„ã¾ã™ã€‚実際ã®ä½¿ç”¨ã‚±ãƒ¼ã‚¹ã«åˆã‚ã›ã¦æ¡ä»¶ã‚’é©åˆ‡ã«è¨å®šã—ã¦ãã ã•ã„。
カスタム例外クラスã®ä½œæˆ
カスタム例外クラスã®ä½œæˆã¯ã€ãƒ—ãƒã‚°ãƒ©ãƒ 内ã§ç‰¹å®šã®çжæ³ã‚„エラーを表ç¾ã™ã‚‹ãŸã‚ã«ã€Javaã®ä¾‹å¤–機構を拡張ã™ã‚‹æ‰‹æ³•ã§ã™ã€‚以下ã¯ã€ã‚«ã‚¹ã‚¿ãƒ 例外クラスã®åŸºæœ¬çš„ãªæ§‹é€ ã¨ä½œæˆã®æ‰‹é †ã«ã¤ã„ã¦ã®è§£èª¬ã§ã™ã€‚
カスタム例外クラスã®å®šç¾©: ã¾ãšã€Exception クラスを継承ã—ã¦æ–°ã—ã„例外クラスを作æˆã—ã¾ã™ã€‚以下ã¯ãã®åŸºæœ¬çš„ãªæ§‹é€ ã§ã™ã€‚
public class CustomException extends Exception {
// コンストラクタやメソッドを追åŠ
}
コンストラクタã®è¿½åŠ : 通常ã€ã‚«ã‚¹ã‚¿ãƒ 例外クラスã«ã¯å°‘ãªãã¨ã‚‚1ã¤ä»¥ä¸Šã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãŒå¿…è¦ã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚„ä»–ã®æƒ…å ±ã‚’ä¾‹å¤–ã«ã‚»ãƒƒãƒˆã§ãã¾ã™ã€‚
public class CustomException extends Exception {
public CustomException() {
super();
}
public CustomException(String message) {
super(message);
}
}
è¿½åŠ ã®ãƒ¡ã‚½ãƒƒãƒ‰: å¿…è¦ã«å¿œã˜ã¦ã€ã‚«ã‚¹ã‚¿ãƒ 例外ã«ã¯çŠ¶æ…‹ã‚„æŒ¯ã‚‹èˆžã„を示ã™ãŸã‚ã®è¿½åŠ ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚
public class CustomException extends Exception {
private int errorCode;
public CustomException(String message, int errorCode) {
super(message);
this.errorCode = errorCode;
}
public int getErrorCode() {
return errorCode;
}
}
例外ã®ã‚¹ãƒãƒ¼: カスタム例外を使用ã™ã‚‹ãŸã‚ã«ã¯ã€é©åˆ‡ãªæ¡ä»¶ã§ãã®ä¾‹å¤–をスãƒãƒ¼ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã“れã«ã¯é€šå¸¸ã€throw new CustomException(“エラーメッセージ”, errorCode); ã®ã‚ˆã†ãªå½¢å¼ãŒä½¿ã‚れã¾ã™ã€‚
public class Example {
public static void main(String[] args) {
try {
// ã‚ã‚‹æ¡ä»¶ãŒæº€ãŸã•れãªã„å ´åˆã«ã‚«ã‚¹ã‚¿ãƒ 例外をスãƒãƒ¼
if (æ¡ä»¶ãŒæº€ãŸã•れãªã„) {
throw new CustomException("エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ", 1001);
}
} catch (CustomException e) {
System.out.println("エラーコード: " + e.getErrorCode());
System.out.println("エラーメッセージ: " + e.getMessage());
}
}
}
ã“れã«ã‚ˆã‚Šã€ç‰¹å®šã®çжæ³ã‚„エラーをより具体的ã«è¡¨ç¾ã§ãã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®ä¿å®ˆæ€§ã‚„デãƒãƒƒã‚°ãŒå‘上ã—ã¾ã™ã€‚ã¾ãŸã€ä¾‹å¤–ãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ã®ä¸€ç’°ã¨ã—ã¦ç‹¬è‡ªã®ä¾‹å¤–クラスを使用ã™ã‚‹ã“ã¨ã§ã€ã‚¨ãƒ©ãƒ¼ã®ç‰¹å®šã‚„対応ãŒå®¹æ˜“ã«ãªã‚Šã¾ã™ã€‚
カスタム例外クラスã®ä½œæˆã¯ã€Javaプãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã«ãŠã„ã¦æŸ”軟性ã¨åŠ¹æžœçš„ãªã‚¨ãƒ©ãƒ¼ãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ã‚’実ç¾ã™ã‚‹ãŸã‚ã®é‡è¦ãªæ‰‹æ³•ã§ã™ã€‚状æ³ã«å¿œã˜ãŸã‚¨ãƒ©ãƒ¼ã‚’é©åˆ‡ã«è¡¨ç¾ã—ã€ãれã«å¯¾ã™ã‚‹å‡¦ç†ã‚’行ã†ã“ã¨ã§ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®å“質ã¨ä¿å®ˆæ€§ã‚’å‘上ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
ãŸã ã—ã€ã‚«ã‚¹ã‚¿ãƒ 例外クラスをé©åˆ‡ã«ä½¿ç”¨ã™ã‚‹ã«ã¯ã€æ…Žé‡ã«è¨ˆç”»ã—ã€ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆå…¨ä½“ã§ä¸€è²«æ€§ã‚’æŒãŸã›ã‚‹ã“ã¨ãŒå¿…è¦ã§ã™ã€‚ã¾ãŸã€å†—é•·ãªä¾‹å¤–クラスã®ä½œæˆã¯é¿ã‘ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®ç†è§£ã¨ä¿å®ˆæ€§ã‚’æãªã‚ãªã„よã†ã«å¿ƒãŒã‘ã‚‹ã“ã¨ã‚‚大切ã§ã™ã€‚
独自ã®ä¾‹å¤–クラスを使用ã™ã‚‹ã“ã¨ã§ã€ãƒ—ãƒã‚°ãƒ©ãƒ ãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ã®ã‚る異常ãªçŠ¶æ…‹ã‚’ã‚ˆã‚Šè©³ç´°ã‹ã¤åŠ¹æžœçš„ã«è¨˜è¿°ã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€é–‹ç™ºè€…ã¯ã‚¨ãƒ©ãƒ¼ã®ç™ºç”Ÿæºã‚’ã™ãã«ç‰¹å®šã—ã€ãれã«å¯¾ã™ã‚‹é©åˆ‡ãªå¯¾å‡¦ã‚’行ã†ã“ã¨ãŒã§ãã¾ã™ã€‚例外処ç†ã¯ãƒ—ãƒã‚°ãƒ©ãƒ ã®ä¿¡é ¼æ€§ã‚’å‘上ã•ã›ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¨ã‚¯ã‚¹ãƒšãƒªã‚¨ãƒ³ã‚¹ã‚’å‘上ã•ã›ã‚‹é‡è¦ãªè¦ç´ ã§ã‚ã‚‹ãŸã‚ã€ã‚«ã‚¹ã‚¿ãƒ 例外クラスã®é©åˆ‡ãªæ´»ç”¨ã¯ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã‚¹ã‚ルã®å‘上ã«ç¹‹ãŒã‚Šã¾ã™ã€‚
「019 例外ã¨ä¾‹å¤–処ç†ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント