Я читав поради з цього питання про те, як слід вирішувати винятки якомога ближче до місця, де воно порушено.
Моя дилема по кращій практиці , чи потрібно використовувати TRY / зловити / нарешті повернути перерахування (або Int , який представляє собою значення, 0 для помилки, 1 для ок, 2 для попередження і т.д., в залежності від випадку) , так що відповідь завжди в порядку, чи варто випустити виняток, щоб частина, яка викликає, вирішила це?
З того, що я можу зібрати, це може бути різним залежно від конкретного випадку, тому оригінальна порада здається дивною.
Наприклад, на веб-сервісі ви завжди хотіли б повернути стан, звичайно, тому будь-який виняток має бути вирішений на місці, але дозвольте сказати всередині функції, яка публікує / отримує деякі дані через http, ви хочете, щоб виняток (наприклад, у випадку 404) просто перейти до того, хто його вистрілив. Якщо цього не зробити, вам доведеться створити спосіб інформування виклику про якість результату (помилка: 404), а також про сам результат.
Хоча можливо спробувати вилучити виняток 404 всередині допоміжної функції, яка отримує / розміщує дані, чи не так? Чи тільки я використовую маленьку команду для позначення станів у програмі (і, звичайно, відповідним чином документую їх), а потім використовую цю інформацію для перевірки правильності (усе нормально / обробка помилок) зовні?
Оновлення: Я очікував фатального / нефатального винятку для основної класифікації, але я не хотів включати це, щоб не заважати відповідям. Дозвольте мені уточнити, про що йдеться: Поводження з викинутими винятками, а не викидання виключень. Який бажаний ефект: виявіть помилку та спробуйте відновити її. Якщо відновлення неможливо, надайте найбільш змістовні відгуки.
Знову ж таки, із прикладом http get / post, питання полягає в тому, чи слід надати новий об’єкт, який описує, що сталося з вихідним абонентом? Якщо цей помічник був у бібліотеці, яку ви використовуєте, чи очікуєте, що він надасть вам код статусу для цієї операції, або ви включите його до блоку спробу лову? Якщо ви розробляєте його, чи надасте ви код статусу чи викинете виняток і дозволите верхньому рівню замість цього перевести його у код / повідомлення стану?
Конспект: Як ви вибрали, якщо фрагмент коду замість створення винятку повертає код статусу разом з результатами, які він може отримати?