Тема: try/catch
Розкажіть будь ласка за виняток try/catch.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Java → try/catch
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Розкажіть будь ласка за виняток try/catch.
Давайте я вам краще розкажу за форумну культуру. Отже, після того, як вам розкажуть тут про те, що ви хочете, тут з'явиться певний текст. Практично такий самий, як і в тисячі інших місць в мережі. Але ті тексти ви навіть не намагалися прочитати, тобто практично гарантовано можна вважати, що й цей читати не станете. Тому особливого сенсу відповідати на такі питання немає. От якби ви хоч якось продемонстрували, що намагалися розібратися самостійно...
Розкажіть будь ласка за виняток try/catch.
Можна надсилати вам рахунок за навчання?
Ок.Вибачайте за таку наглость я читав за цей вийняток я не можу зрозуміти
try{
Метод, або небезпечнні строки
}
catch( що тут пишуть){}
Там пишуть тип виняткової ситуації і її назву, ну тобто проголошують змінну. Спрацює тільки той блок catch, який відповідає за той самий тип винятку (так, блоків catch може бути багато).
ну наприклад я створив свій метод і поставив його у виняток який мені потрібний тип винякової ситуація поставити?
Розкажу своїми словами як це бачу я:
Наприклад у вас є програма яка виконує певну роботу. У ній є метод sendEmail
ви викликаєте його коли треба відправляти повідомлення. У sendEmail багато роботи і бувають моменти коли він викидує exception
Наприклад обірвалось з’єднання з інтернетом під час відправлення листа
Або наприклад сталась ще якась критична ситуація.
Відповідно ви не хочете що б ваша програма падала а обгортаєте виклик методу в try catch
try {
sendEmail();
} catch (NetworkException e) {
System.err.println("NetworkException: " + e.getMessage());
// для певного випадку ми можемо наприклад показати користувачу кнопку "Спробувати ще раз" або автоматом спробувати ще 1 раз відправити цей лист
} catch (Exception e) {
System.err.println("Caught: " + e.getMessage());
// у всіх інших випадках пишемо у лог і обробляємо цю ситуацію
}
Фішка у тому що за допомогою відловлювання ексепшинів ми можемо написати програму так - що вона не буде падати у не критичних випадках.
Якщо не відправили лист - ми придумаємо що з цим робити
Якщо сталась якась помилка у мережі, у формуванні подвідомлення - також можна придумати щось у цій ситуації.
Це моє бачення і розуміння.
ну наприклад я створив свій метод і поставив його у виняток який мені потрібний тип винякової ситуація поставити?
Той, що може виникати у вашому методі.
Часто потрібно ставити вийняток на код чи лише у тих випадках як Replace Team сказав наприклад зв'язані з відправкою або обробкою.
Часто потрібно ставити вийняток на код чи лише у тих випадках як Replace Team сказав наприклад зв'язані з відправкою або обробкою.
Ну, наприклад, якщо пишете програму синтаксичного розбору, а надходить речення, яке за всіма ознаками є питанням, а наприкінці стоїть крапка - це має створювати виняток. Крім того, виняткові ситуації тут виникають під час семантичного розбору через застосування невідомого виразу "ставити вийняток" (виняткову ситуацію можна створювати і обробляти, але не ставити) і згадку невідомого користувача...
А якщо серйозно, то винятки потрібні, коли у вас кілька вкладених функцій, які не можуть працювати, якщо щось пішло не так всередині. Якщо ж функція одна, то можна і if/else-ом відбутися (хоча, звісно, якщо там 10 вкладених циклів, вже треба думати про винятки... чи оптимізацію).
Якщо код може згенерувати виняток і його можна обробити - варто відловлювати цей виняток і щось з цим робити)
Звісно ви маєте розуміти де можуть бути винятки а де ні. Я веду до того що якщо код працює нормально і не генерує винятків просто так не варто його засовувати в конструкцію try catch
А ще - в реальному коді дуже не варто відловлювати всі винятки (Exception), а не конкретні підтипи, крім:
- найзагальнішого обробник в коді (тобто ви певні, що навколо нічого вже не буде);
- випадків, коли ви знову кидаєте цей виняток (тобто робите throw в блоці catch, і кидаєте те саме, що схопили).
Так можна втратити якийсь непередбачений випадок - його оброблять всередині коду, а ви навіть не знатимете, що воно сталося.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися