" 유효한 자바 "에 있는 조슈아 블로흐는
복구 가능한 조건에 대해 확인 된 예외를 사용하고 프로그래밍 오류에 대해 런타임 예외를 사용하십시오 (제 2 판의 항목 58).
내가 이것을 올바르게 이해하는지 봅시다.
다음은 확인 된 예외에 대한 이해입니다.
try{
String userInput = //read in user input
Long id = Long.parseLong(userInput);
}catch(NumberFormatException e){
id = 0; //recover the situation by setting the id to 0
}
1. 위의 사항은 확인 된 예외로 간주됩니까?
2. RuntimeException이 검사되지 않은 예외입니까?
확인되지 않은 예외에 대한 이해는 다음과 같습니다.
try{
File file = new File("my/file/path");
FileInputStream fis = new FileInputStream(file);
}catch(FileNotFoundException e){
//3. What should I do here?
//Should I "throw new FileNotFoundException("File not found");"?
//Should I log?
//Or should I System.exit(0);?
}
4. 이제 위의 코드도 확인 된 예외가 될 수 없습니까? 이런 상황을 복구하려고 할 수 있습니까? 할 수 있습니까? (참고 : 내 세 번째 질문은 catch
위 의 내용입니다)
try{
String filePath = //read in from user input file path
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
}catch(FileNotFoundException e){
//Kindly prompt the user an error message
//Somehow ask the user to re-enter the file path.
}
5. 사람들은 왜 이것을 하는가?
public void someMethod throws Exception{
}
왜 예외가 발생하게합니까? 오류를 더 빨리 처리하지 않습니까? 왜 거품이 일어 납니까?
6. 정확한 예외를 버블 링하거나 예외를 사용하여 마스킹해야합니까?
아래는 내 독서입니다
DataSeries
항상 시간 기반 순서로 유지 해야하는 데이터를 보유 하는 클래스가 있습니다.DataPoint
끝에 새 항목 을 추가하는 방법이 있습니다DataSeries
. 내 코드가 모두 프로젝트 전체에서 올바르게 작동DataPoint
하는 경우 끝에 이미 날짜가있는 끝에 추가해서는 안됩니다. 전체 프로젝트의 모든 모듈은이 트루 즘으로 구축됩니다. 그러나이 조건을 확인하고 확인되지 않은 예외가 발생하면 throw합니다. 왜? 이런 일이 발생하면 누가이 작업을 수행하고 있는지 알고 싶습니다.