Megnéztem a linkeket:
Az 1. link szerint azért nem jó a kivétel, mert inkonzisztens állapotú objektumokat hagy maga után. Ellenvetés: Erre találták ki a finally ágat. A finally ág végrehatódik a try blokk elhagyásakor, de NEM kapja el a kivételt.
A 2. link szerint azért nem jó a (Jáva) kivétel, mert rákényszeríti a programozót a hiba kezelésére. Idézet:
private String getContent(Path targetFile) {
List<String> lines = Files.readAllLines(targetFile);//compile error: "Unhandled IOException"
String content = Joiner.on("").join(lines);
return content;
}
This code doesn’t compile, since Files.readAllLines() throws a checked exception.
We are forced to handle this IOException. That’s annoying, but what can we do?
Option A) Rethrow the exception
Option B) Handle the exception
Végül a cikk arra jut, hogy exception helyett errorokat kell használni, idézet:
The Solution: Use Unchecked Exceptions And Wrap Checked Exceptions
Ez azonban baromság. A szerző nem jött rá, hogy az Option A. és Option B. helyett lehet csinálni a következőt:
private String getContent(Path targetFile) throws Exception
Vagyis nem kell elkapni a kivételt, hanem feljebb lehet adni. Bár az igaz, hogy ez a módszer néha nem működik, ha előre meghatározott interfészt kell implementálni. Ez már egy Jáva tervezési hiba.