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