Отказ от ответственности: я из мира C #, поэтому этот вопрос может быть предвзятым из-за моего предыдущего опыта
У меня есть метод инициализации ведения журнала. Если это не удается, остальная часть приложения не должна запускаться, так как любой вызов в logger выдаст исключение NullPointerException.
Сегодня мой код перехватывает исключение и печатает журнал ошибок через System.err. Для меня это ошибка, она должна позволять распространению исключения до тех пор, пока оно не убьет приложение.
Поэтому я начал удалять catch try и неожиданно получил жалобы от компилятора о том, что я должен объявить свое исключение ввесь стек, где вызывается этот метод.
Я понимаю логику, стоящую за этим, и привык к тому, что она практична: вы знаете, как этот метод может потерпеть неудачу.
Однако, это не подходит мне с точки зрения разделенияобязанность. Я не хочу, чтобы верхние уровни знали об этой потенциальной ошибке IOException, это очень специализированное поведение, которое не должно быть известно, например, методу main. И если мы придерживаемся этой логики, это означает, что:
- высшему уровню в конечном итоге придется объявить всю область исключений (от ввода-вывода до сети и пользовательских исключений ...)
- Любое добавление нового исключения может потенциально повлиять на множество файлов и кода
Я что-то упустил или это предназначенный дизайн исключения?