Здравствуйте, fddima, Вы писали:
F> Как минимум, проблема в том, что код который может бросить исключение или ошибку — может вызываться косвенно, и что именно это будет за код — заранее не известно. F> При чём обработка ошибки — не ответственность вызывающего кода. F> Однако, не забудь, что разработчики обоих частей кода не знают друг о друге, и о возможных ошибках.
Да, это распространенное мнение. В нем есть свой резон.
Однако лично я считаю, что если "код который может бросить исключение или ошибку — может вызываться косвенно, и что именно это будет за код — заранее не известно", и если "обработка ошибки — не ответственность вызывающего кода", то из этого вытекает однозначное следствие — вызывающий код _обязан_ выполниться полностью, с сохранением всех предусловий, постусловий и инвариантов, так, как если бы ошибки вообще не было (либо откатиться полностью, как если бы вызова вообще не было). Если же вызывающий код грубо прерывается непонятно в каком месте и состояние программы разрушается, то это протечка абстракции.
TD;LR. Я не считаю описанный вами способ корректным. Подходящим на практике в каких-то случаях (может быть, даже в большом количестве случаев) — может быть. Корректным — нет.