( geza42 | 2018. 11. 29., cs – 22:29 )

Szerintem én nem mondtam olyat, hogy "alapvetés, hogy a keletkezési helyén jobban tudod, hogy mit akarsz vele kezdeni". Csak arra hívtam fel a figyelmet, hogy a goto-t evil-nek mondják, közben a throw részben ugyanazt csinálja, mint egy goto. Sőt, rosszabb, mert nem lehet tudni, hogy hova ugrik. A goto-nál legalább látszik.

De amúgy azzal egyetértek, hogy "elmondja, hogy mi baja. Hogy ezzel mit kell kezdeni, az a magasabb szintű hívó dolga.". Csak szerintem erre az exception nem annyira jó megoldás, legalábbis a mostani formájában nem. Szerintem sokkal jobb, ha az exception-t nem dobjuk, hanem valami error objectet visszaadunk, amit aztán a hívó fél lekezel. A hívási ponton, és nem máshol. Az esetek nagy részében ez tisztább, átláthatóbb megoldás.

Amúgy is, mi dönti el, hogy valami exception-e, vagy sem? Úgy értem, exception az valami kivételes dolgot jelent, valami olyat, amit nem vártunk. Ha egy file-nál olvasás közben EOF van, akkor az vajon exception-e? Hibát jelent-e? Ha sima text file, akkor nem biztos, hogy hiba, simán lehet, hogy csak vége a file-nak. Ha egy struktúrával rendelkező file (bináris file-ok, XML, stb.), ahol még folytatódnia kellene, akkor hibát jelent.

Szerintem egy fv hívás adja csak vissza szépen az hívás eredményét, bármi is legyen az (rendben végetért, ilyen-olyan hiba). Aztán majd a hívó fél eldönti, hogy mit csinál az eredménnyel. A fordító pedig lehetőség szerint figyelmeztessen arra, ha valami potenciális hiba nincs lekezelve.