Re[14]: Тенденции языков
От: AlexRK  
Дата: 22.05.15 08:53
Оценка:
Здравствуйте, fddima, Вы писали:

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

F> При чём обработка ошибки — не ответственность вызывающего кода.
F> Однако, не забудь, что разработчики обоих частей кода не знают друг о друге, и о возможных ошибках.

Да, это распространенное мнение. В нем есть свой резон.

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

TD;LR. Я не считаю описанный вами способ корректным. Подходящим на практике в каких-то случаях (может быть, даже в большом количестве случаев) — может быть. Корректным — нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.