( mrev | 2015. 07. 14., k – 09:48 )

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.

--
ulysses.co.hu