( enpassant | 2015. 07. 16., cs – 08:36 )

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ó.

  1. 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)
  2. 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
  3. 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:

  1. Checked exception. Ezt leírtad, hogyan lehet kezelni vele.
  2. Runtime exception. Ugyanaz, csak a doksiba kerül bele az exception leírása, nincs kikényszerítve.
  3. 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.