Джошуа Блох в « Effective Java » сказал, что
Используйте проверенные исключения для восстанавливаемых условий и исключения времени выполнения для ошибок программирования (Элемент 58 во 2-й редакции)
Посмотрим, правильно ли я понимаю.
Вот мое понимание проверенного исключения:
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.Должен ли я вспомнить точное исключение или замаскировать его с помощью исключения?
Ниже приведены мои показания
В Java, когда мне следует создать проверенныйисключение, и когда это должно быть исключение времени выполнения?
Когда выбирать отмеченные и непроверенные исключения