Джошуа Блох в " Ефективній Java " сказав це
Використовуйте перевірені винятки для відновлюваних умов та виключень під час виконання програм для помилок програмування (Пункт 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. Чи слід міхурити точний виняток або замаскувати його за допомогою винятку?
Нижче мої читання
Коли в Java потрібно створити перевірений виняток, і коли це повинен бути виняток під час виконання?
DataSeriesклас, у якому зберігаються дані, які завжди повинні залишатися у часовому порядку. Існує спосіб додати новеDataPointдо кінцяDataSeries. Якщо весь мій код працює правильно впродовж проекту, йогоDataPointне слід додавати до кінця, який має попередню дату до тієї, яка вже закінчується. Кожен модуль у всьому проекті будується з цією істиною. Однак я перевіряю цю умову і кидаю неперевірений виняток, якщо це трапилося. Чому? Якщо це трапиться, я хочу знати, хто це робить, і виправити це.