Запитання з тегом «exception-handling»

Обробка винятків - це процес реагування на виникнення аномальних чи виняткових умов, що вимагають спеціальної обробки - часто змінюючи нормальний потік виконання програми.

8
Винятки: навіщо кидати рано? Навіщо пізно ловити?
Існує багато відомих найкращих практик щодо поводження з винятками ізольовано. Я знаю "робити і чого не робити" досить добре, але все ускладнюється, коли справа стосується кращих практик або моделей у великих середовищах. "Кинь рано, лови пізно" - я чув уже багато разів, і це все ще мене бентежить. Чому я …


8
Навіщо використовувати спробувати… нарешті, без застереження?
Класичний спосіб програмування - с try ... catch. Коли доцільно використовувати tryбез catch? У Python наступне виглядає законним і може мати сенс: try: #do work finally: #do something unconditional Однак код нічого не зробив catch. Аналогічно можна подумати і на Яві: try { //for example try to get a database …


3
Чому специфікації виключень погані?
Ще в школі близько 10 років тому вони вчили вас використовувати специфікатори виключень. Оскільки мій досвід є одним із них, програмістів Torvaldish C, який вперто уникає C ++, якщо не змушений до цього, я стикаюся лише на C ++, і коли я все ще використовую специфікатори виключень, оскільки саме цього …

6
Вирішення винятків для перевірених Java
Дуже ціную нові функції Java 8 щодо інтерфейсів лямбдасів та методів за замовчуванням. Та все ж мені все одно нудно за перевіреними винятками. Наприклад, якщо я просто хочу перерахувати всі видимі поля об’єкта, я хотів би просто написати це: Arrays.asList(p.getClass().getFields()).forEach( f -> System.out.println(f.get(p)) ); Тим не менш, оскільки getметод може …

8
Навіщо проектувати сучасну мову без механізму обробки винятків?
Багато сучасних мов надають багато функцій обробки винятків , але мова програмування Swift Apple не забезпечує механізм обробки винятків . Як і я, керуючись винятками, у мене виникають проблеми з обгортанням того, що це означає. Свіфт має твердження і, звичайно, повертає значення; але у мене виникають труднощі уявити, як мій …

5
чи слід кидати виняток з конструктора?
Я знаю, що можу викинути виключення з конструктора в PHP, але чи варто це робити? Наприклад, якщо значення параметра не таке, як я очікував. Або я повинен відкладати викидання виключення, поки метод не буде викликаний. Які переваги та недоліки в обох випадках?

8
Чи є законні причини повернення об’єктів виключення замість того, щоб їх кидати?
Це питання поширюється на будь-яку мову програмування ОО, яка підтримує обробку виключень; Я використовую C # лише для ілюстративних цілей. Виключення, як правило, призначені для збільшення, коли виникає проблема, що код не може негайно обробити, а потім потрапити в catchпункт в іншому місці (зазвичай це зовнішній кадр стека). Питання: Чи …

4
Чому для пробного лову потрібні дужки?
На різних мовах (принаймні Java, думаю, також C #?) Ви можете робити такі речі if( condition ) singleStatement; while( condition ) singleStatement; for( var; condition; increment ) singleStatement; Тож, коли у мене є лише одне твердження, мені не потрібно додавати нову область { }. Чому я не можу зробити це …

5
Як боротися з перевіреними винятками, які ніколи не можна кинути
Приклад: foobar = new InputStreamReader(p.getInputStream(), "ISO-8859-1"); Оскільки кодування є жорстким і правильним, конструктор ніколи не кине заявлене в специфікації UnsupportedEncodingException (якщо не буде порушена реалізація Java, і в цьому випадку я все одно втрачаюсь). У будь-якому разі, Java змушує мене в будь-якому разі боротися з цим винятком. Наразі це виглядає …


4
Закидання винятку всередину нарешті
Аналізатори статичного коду, такі як Fortify, "скаржаться", коли виняток може бути кинутий всередині finallyблоку, кажучи про це Using a throw statement inside a finally block breaks the logical progression through the try-catch-finally. Зазвичай я з цим згоден. Але останнім часом я натрапив на цей код: SomeFileWriter writer = null; try …

12
Чи потрібна "нарешті" частина "спробувати ... зловити ... нарешті"?
Деякі мови (наприклад, C ++ та ранні версії PHP) не підтримують finallyчастину try ... catch ... finallyконструкції. Чи finallyпотрібні коли-небудь? Оскільки код у ньому завжди працює, чому б я / не мав би просто розмістити цей код після try ... catchблоку без finallyзастереження? Навіщо використовувати його? (Я шукаю причину / …

3
Чи повинен службовий рівень охоплювати всі винятки дао та обробляти їх як службові виключення?
У мене є тришаровий веб-додаток Spring: дао, сервіс та контролери. Контролер ніколи не викликає безпосередньо дао, він робить це через рівень обслуговування. Зараз більшу частину часу, якщо існує виключення дао (час виконання), яке не обробляється, буде сприйняте JSP, що показує повідомлення про помилку кінцевому користувачеві. Чи повинен службовий рівень охоплювати …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.