Джошуа Блох в "Эффективной Яве" сказал, что
Использовать отмеченные исключения для восстанавливаемые условия и время выполнения исключения для ошибок программирования (Пункт 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. Должен ли я вспомнить точное исключение или замаскировать его с помощью исключения?
Ниже приведены мои показания