Der Teil dieser Ausnahmen, der mich am meisten stört, ist, dass es meine Codeabdeckung verletzt.
Wenn ich in Bezug auf die Berichterstattung zwanghaft werde, rolle ich das Try / Catch auf, das "niemals passieren kann" (... oder nur, wenn ich eine mutierte JVM verwende, die irgendwie vergessen hat, "US-ASCII" aufzunehmen) Eine Klasse und Methode, die diesen Versuch / Fang kapselt und die aktivierte Ausnahme auf eine der hier genannten Arten ersetzt (normalerweise wird eine nicht aktivierte Ausnahme durch eine Snide-Nachricht ausgelöst).
Dann hat meine Codeabdeckung einen Treffer in der Utility-Klasse, aber nicht in allen Verweisen auf diese Operation, die über meinen Code verstreut sind.
Manchmal nehme ich mir die Zeit, um wie Operationen in einer Klasse mit tatsächlich kohärenter Semantik aufzurollen. Aber da es für meine Teamkollegen ziemlich offensichtlich ist, was los ist, halte ich es normalerweise so einfach wie möglich und mache mir nicht so viele Gedanken über das bestmögliche Design.
Wie bereits erwähnt, haben Guava und andere Bibliotheken Möglichkeiten, diesen Schmerz zu lindern - aber das ist im Grunde die gleiche Strategie. Bewegen Sie den Ärger von der Bühne, damit Ihr Hauptcode den Treffer in der Berichterstattung nicht mitmacht.