Я всегда сталкиваюсь с этим ... пытаясь найти правильный баланс между попыткой / отловом и кодом, который не превращается в этот непристойный беспорядок вкладок, скобок и исключений, которые отбрасываются обратно в стек вызовов, как горячий картофель. Например, у меня есть приложение, которое я сейчас разрабатываю и которое использует SQLite. У меня есть интерфейс базы данных, который абстрагирует вызовы SQLite, и модель, которая принимает входящие / исходящие данные из базы данных ... Поэтому, если / когда возникает исключение SQLite, оно должно быть передано в модель (которую он вызвал) ), который должен передать его тому, кто вызвал AddRecord / DeleteRecord / что угодно ...
Я являюсь поклонником исключений, а не возвращаю коды ошибок, потому что коды ошибок можно игнорировать, забыть и т. Д., В то время как Исключение, по сути, должно быть обработано (предоставлено, я мог бы поймать и двигаться дальше ...) уверен, что должен быть лучший способ, чем то, что у меня сейчас происходит.
Изменить: я должен был сформулировать это немного по-другому. Я понимаю, что перебрасывать как разные типы и тому подобное, я плохо сформулировал, и это моя вина. Мой вопрос ... как лучше всего поддерживать чистоту кода при этом? Это только начинает чувствовать себя чрезвычайно загроможденным для меня через некоторое время.