Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Вт Окт 31 2006 18:29 Заголовок сообщения: Java. throws (...) - что это значит? |
|
|
в листингах книги встречаются записи
Код: | public void countBooks() throws Exception |
Exception может изменяться на что-то иное.
что же означает throws ? (книгу читаю не с начала и не по порядку, но что такое throws - не смог найти). |
|
Вернуться к началу |
|
|
Штирка
Зарегистрирован: 01.12.2003 Сообщения: 8
|
Добавлено: Вт Окт 31 2006 21:07 Заголовок сообщения: Re |
|
|
throws в данном случае означает "может генерировать" (то бишь в процессе выполнения функция может генерировать нестандартную ситуацию) |
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Вт Окт 31 2006 22:12 Заголовок сообщения: |
|
|
а практический смысл в этой записи тогда какой? |
|
Вернуться к началу |
|
|
Штирка
Зарегистрирован: 01.12.2003 Сообщения: 8
|
Добавлено: Вт Окт 31 2006 22:56 Заголовок сообщения: А смысл простой.... |
|
|
... - таким манером ты оговариваешь тип нестандартных ситуаций которые могут возникнуть при исполнении кода в функции countBooks() а так же способы обработки этих ситуаций. (Наглядный пример - деление одного числа на другое, когда нестандартной ситуацией является деление на 0 (и которую можно, например, обработать с помощью вывода сообщения об ошибке и делении на 0)). |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Ср Ноя 01 2006 14:11 Заголовок сообщения: |
|
|
Ну... Предположим, ошибки времени выполнения (RuntimeException) не принято обрабатывать.
Но есть другие ошибки, например при работе с БД. Если происходит ошибка при выполнении транзакции можно ее откатить в блоке catch
Например:
Код: |
Connection connection = dataSource.getConnection();
conenction.setAutoCommit(false);
try{
...
connection.commit();
}catch(SQLException e){
connection.rollback();
}finally{
connection.close();
} |
Если при выполнении транзакции произойдет ошибка, то транзакция откатится. А вообще, без понимания системы обработки исключений программировать на Java даже пробовать не стоит. Т.к. в Java обработка исключений (кроме RuntimeException) является обязательной. Поэтому список возбуждаемых исключений входит в описание метода. _________________ Самоловских Виталий aka Kefir |
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Пт Ноя 03 2006 10:57 Заголовок сообщения: |
|
|
Kefir, спасибо. Kefir писал(а): | без понимания системы обработки исключений программировать на Java даже пробовать не стоит. |
программировать ещё не собрался, пока изучаю. думаю, что разберусь в теме. |
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Пт Ноя 03 2006 12:15 Заголовок сообщения: |
|
|
если мы после описания функции:
Код: | public void countBooks() |
указываем
то потом мы при её вызове можем использовать структуру:
Код: | try{
this.countBooks();
}catch(Exception e){
System.out.println( "ошибка в функции countBooks:\n " + e.toString() );
} |
правильно ли я понимаю? |
|
Вернуться к началу |
|
|
Штирка
Зарегистрирован: 01.12.2003 Сообщения: 8
|
Добавлено: Сб Ноя 04 2006 16:47 Заголовок сообщения: Да, правильно |
|
|
(-) |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Вт Ноя 07 2006 07:24 Заголовок сообщения: |
|
|
dipsy писал(а): |
правильно ли я понимаю? |
Не можем, а должны. Или при описании метода использующего данный м5етод нужно указать все тот же throw... _________________ Самоловских Виталий aka Kefir |
|
Вернуться к началу |
|
|
|