Ez már így tényleg kimerítő, így már könnyen megértettem! :) Talán egy kicsit kevesebb is elég lett volna, de köszi a fáradozást!
Akkor én is megpróbálok ilyen kimerítő lenni! ;)
Ez nem igazán az idézett részre vonatkozik.
Ott én csak annyit állítottam, hogy sokan úgy programoznak, hogy az IDE és a fordító által adott szolgáltatások segítségével kvázi gondolkodás nélkül programoznak. Beírja az objektum nevét, pont, feljönnek az objektum metódusai, kiválaszt egyet, az IDE kitölti a paraméter listát, kicseréli a paramétereket, ezután ha jelez a "fordító", hogy exception-t kell lekezelni, akkor bevágja egy try - catch blokkba, ha nem, akkor megy tovább.
Ha az adott metódust akár először vagy másodszor látja, akkor sem olvassa el a doksiját, és fogalma sincs, ha ott jöhet RuntimeException, vagy az nem thread safe.
Amit írsz az inkább azt a kérdést feszegeti, hogy checked exception, runtime exception vagy (pl. a Go féle) többszörös érték visszaadás a jó.
- Checked Exception. Előnye, hogy szól a fordító és kikényszeríti, hogy valamit kezdj vele.
Hátrányai:- nehezen olvashatóvá teheti a kódot
- nehéz refaktorálni
- inkonzisztens állapotot hagyhat maga után
- nehéz újrafelhasználni
- nehéz kombinálni más dolgokkal (compose)
- Runtime Exception: Előnyei:
- könnyű refaktorálni
- könnyű újrafelhasználni
- könnyű kombinálni más dolgokkal (compose)
Hátrányai:
- nehezen olvashatóvá teheti a kódot
- nem szól a fordító és kényszeríti ki, hogy valamit kezdj vele
- inkonzisztens állapotot hagyhat maga után
- Többszörös érték visszaadás. Előnyei:
- könnyebben olvasható a kód
- nem hagy inkonzisztens állapotot maga után
- könnyű refaktorálni
- könnyű újrafelhasználni
- könnyű kombinálni más dolgokkal (compose)
A fentiek fényében a kérdésedre a válasz:
- Checked exception. Ezt leírtad, hogyan lehet kezelni vele.
- Runtime exception. Ugyanaz, csak a doksiba kerül bele az exception leírása, nincs kikényszerítve.
- Többszörös érték visszaadás. Visszaadod az értéket és az adott exception-t is, tehát nem dobod az exception-t, hanem visszaadod úgy, mint más értékeket is.
Ahogy írtad is korábban a Runtime exception-t nem erre találták ki, hanem arra, hogy a programozási hibákról adjon minél gyorsabban visszajelzést, ezek elkerülése programozással megoldható. Sokan mégis azt választják egyéb esetekben is az előnyei miatt.
A többszörös érték visszaadást a Java-ban nem igazán használják, inkább a két rosszabb közül választanak, köszönhető ez annak is, hogy a Java nyelvből hiányoznak az ezt támogató elemek. Go-ban nincs is más, Scala-ban (az exception nem kikényszerített) javasolt inkább a többszörös érték visszaadást választani az előnyei miatt, ráadásul nagyon meg van támogatva a kezelése.