|
|
|
Использование "try-catch" или "throws"
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Возник вопрос, который кому-нибудь обязательно покажется банальным, но все же я прошу помощи и разъяснения. Суть: при обработке исключений когда использовать конструкцию try-catch, а когда throws? Я понимаю так: 1)когда необходимо обработать небольшой локальный кусочек кода, например, находящегося где-нибудь в методе, то используем "try-catch"; 2) когда же ошибка возникает непосредственно в ходе выполнения метода, то выбрасываем ее за счет "throws". Заранее благодарю за потраченное Вами время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2013, 13:25 |
|
||
|
Использование "try-catch" или "throws"
|
|||
|---|---|---|---|
|
#18+
alex021, throws - обработка исключения переносится на "уровень выше" (напр., ошибки входных параметров и вообще, где подразумевается, что перехват исключений будет на другом уровне (в библиотеках)) try-catch - непосредственно в коде. Можно перехватить и обработать на месте. Либо сделать "проброс дальше" обернув в нужный Вам *Exception (тогда уже вместе со throws). Ссылки: http://en.wikibooks.org/wiki/Java_Programming/Throwing_and_Catching_Exceptions ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2013, 13:54 |
|
||
|
Использование "try-catch" или "throws"
|
|||
|---|---|---|---|
|
#18+
Usman, Спасибо огромное! Стало действительно понятней! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2013, 14:20 |
|
||
|
Использование "try-catch" или "throws"
|
|||
|---|---|---|---|
|
#18+
alex021, обработка исключений - вопрос договорённостей между разработчиками еще на этапе проектирования. Оба варианта (1) и (2) одинаково хороши только во втором случае когда мы помечаем метод как throws мы снимаем с себя отвественность за ошибки определённого рода (например IO или Network) и даём возможность верхнему уровню принять решение что делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2013, 14:31 |
|
||
|
Использование "try-catch" или "throws"
|
|||
|---|---|---|---|
|
#18+
alex021Доброго времени суток! Возник вопрос, который кому-нибудь обязательно покажется банальным, но все же я прошу помощи и разъяснения. Суть: при обработке исключений когда использовать конструкцию try-catch, а когда throws? Если функция обрабатывает исключение -- try-catch, если выбрасывает -- throws. Всё просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2013, 16:21 |
|
||
|
Использование "try-catch" или "throws"
|
|||
|---|---|---|---|
|
#18+
общее правило: обрабатывать исключение надо на том уровне, где известно что с ним делать. И категорически не рекомендуется делать это ниже -- это только портить жизнь себе и остальным. Допустим, у вас есть автомобиль. Вы ему говорите "едь в Киев". А у него нет бензина и он брасоает исключение. Автомобиль сам не может обработать исключение, значит throws, дальше исключение передается водителю. Водитель может его обработать? Да, водитель может - или канстру в руки и шагай на бензоколонку, или покупай билет на поезд, самолет или отмени поездку. В зависимоти от. Все эти зависимоти известны водителю а не автомобилю, поэтому это исключение обрабатывать должен водитель и он решает че дальше делать. В некоторых случаях вообще нет уровня, на котором известно что делать с исключением. В этом случае можно даже выходить из программы - пускай пользователь разбирается в чем дело и чинит. Поэтому, обычно действие по умолчанию при получении исключения - распечатать стек максимально подробно. Например, программа хочет скачать из интернета файл, а интернета нет. Что делать? Ответ вываливаться. Пусть это исключение обрабатывается на уровне пользователя программы. Пользователь или воткнет шнурок или пойдет заплатит за следующий месяц, или еще что-нибудь. В любом случае, программа не может этого знать и данная проблема ей не подвласна. То есть вся суть исключений в том, что это сигнал об ошибке, которая не может быть решена на уровне где она возникла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2013, 23:40 |
|
||
|
Использование "try-catch" или "throws"
|
|||
|---|---|---|---|
|
#18+
Читал что "тровс" ставится после сигнатуры метода в теле которого может быть брошено исключение. Есть ли это обязательным условием для использование исключений в методе? И что значит может быть брошено. То есть в методе может не быть ключевого слова "троу"? Как тогда теоретически определить что оно может быть но его нету, и если его нету (видел пример) для чего слово "тровс" после сигнатуры. И вообще- в C++-такой конструкции нету. А джаве для чего она в общем то более простой язык? Не знаю есть ли это слово в шарпе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2014, 00:21 |
|
||
|
Использование "try-catch" или "throws"
|
|||
|---|---|---|---|
|
#18+
stutЧитал что "тровс" ставится после сигнатуры метода в теле которого может быть брошено исключение. Есть ли это обязательным условием для использование исключений в методе? И что значит может быть брошено. То есть в методе может не быть ключевого слова "троу"? Как тогда теоретически определить что оно может быть но его нету, и если его нету (видел пример) для чего слово "тровс" после сигнатуры. И вообще- в C++-такой конструкции нету. А джаве для чего она в общем то более простой язык? Не знаю есть ли это слово в шарпе ну как бы почитать про исключения в джаве для начала не плохо было бы. в шарпе нету такого. ну и насчёт простого и сложного..... ну фиг знает. Скорее более продвинутый и больше написанного уже кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2014, 00:34 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38475678&tid=2127527]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 360ms |

| 0 / 0 |
