170 похожих чатов

Не, ты не в ту сторону пошел и не на

том делаешь акцент. никаких фатальных ошибок не существует. есть только два типа:

1) ожидаемые ошибки.
2) исключительные ситуации.

в твоем примере, то, что ты называешь "исключением" — это ожидаемая ошибка. а то, что ты называешь "фатальной ошибкой" — это исключение.

пример:

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

при этом:

* ожидаемые ошибки возвращаются через return, а исключения — через throw.

правило пальца:

* будет ли программа исполняться, если удалить все обработчики исключений (удалить все try-catch)? если ответ отрицательный — значит исключения используются неправильно.

1 ответов

18 просмотров

Огромное спасибо,очень доступно!)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта