"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."
Miért kell feltétlenül érdekeljen, hogy hova ugrik? A normális visszatérési értéknél se tudom, hogy ki, hol és mire fogja használni. Csak annyit tudok, hogy mit kapok, és azzal mit kell csinálni.
"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."
Ez egyenértékű egy checked exceptionnel, lehet öt szinten feleslegesen lesz a kódban egy error object lekezelése/továbbadása, mert csak felsőbb szinten tudunk kezdeni vele valamit. Pl microserviceknél le lehet kezelni 250 helyen, hogy rossz a json input, amíg elér a controllerig, vagy lehet írni egy darab exception handlert, ami adott típusú exceptionre visszaad 400-as kódot, meg az exception szövegét.