-2

Может кто-нибудь, пожалуйста, помогите мне с чем-то, что кажется простым, но я так и не понял. Исключения! Я знаю, как написать исключение, но бесчисленное множество примеров кода с переменными foo и bar ни в коей мере не помогают мне увидеть, как они на самом деле используются в реальных сценариях.

Это где есть потенциал, чтобы остановить процесс исполнения? Я должен признаться, я никогда не использую их, я просто не знаю, как их использовать. Я уверен, что они важны, хотя. Я предполагаю, что если что-то сломается, я просто позволю этому сломаться, оно все равно выдаст ошибку на экран и остановит выполнение. Является ли смысл исключения, чтобы ошибка не появлялась и не перехватывала ошибку и не передавала сообщение в представление для вывода? Тогда возникает следующий вопрос: откуда мне знать, какие части моего кода могут сломаться? Должен ли я обернуть все в ручках исключений? Насколько широко они должны быть в моем коде?

Извините за то, что кажется, что это может быть легко выяснено, мне просто никогда не удавалось правильно понять их использование. Я был бы признателен, если бы кто-то мог указать мне правильное направление, хотя бы некоторые реальные примеры того, какой код нужно обернуть, также будут высоко оценены. Спасибо

1 ответ1

0

Я думаю, что существуют исключения для тех случаев, когда программа входит в состояние, которое программист считает неправильным, чтобы предупредить программу об этой ошибке и, возможно, продолжить выполнение альтернативным способом (перехват) или просто очистить.

Вещи, которые просты и должны всегда работать, как простая арифметика с небольшими значениями, строковые операции или простые вызовы функций, которые я никогда не обрабатываю, за исключением случаев, когда они могут быть рекурсивными или зависеть от некоторого нестабильного ввода.

Я обычно использую try/catch, когда программа сильно зависит от действий пользователя или других операций ввода-вывода (файлов, баз данных, сокетов) - переменных, значения которых я не могу предсказать с очень высокой точностью (если они зависят от удаленных служб, могут исчерпать память, или тайм-аут)

Если вы еще этого не сделали, попробуйте запрограммировать немного Java, чтобы увидеть, что его производители рассматривают в тех случаях, когда необходимы исключения.

Вот пример: мне нужен текущий курс валюты для € -> $ конвертации

  • данные уже в кеше и не старше 5 минут? Тогда используйте это. Если не:
  • попробуйте использовать веб-сервис, чтобы получить последний фактор с веб-сайта.
  • если запрошенное значение не может быть найдено в ответе или оно не готово, я выбрасываю исключение
  • в улове я бы
    • попытаться получить последний сохраненный фактор из базы данных / файла
    • если данные из БД по какой-то причине не могут быть возвращены, я выкидываю снова
    • перехватить исключение, записать проблему с базой данных в журнал (возможно, в другой попытке / перехватить, если диск был переполнен и запись в журнал не может быть записана) и
      • используйте некоторый постоянный коэффициент, который был бы в коде (или напишите "извините, не могу получить текущие данные конверсии"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .