Nein, sondern als Pro-Beispiel. JSON.parse entspricht der Foo.prototype.someMethod Methode Funktion aus meinen Ausführungen.
Und derjenige, der JSON.parse nutzt, ist der Aufrufer, der die Exception fangen muss. Einen Syntax-Error wegen fehlerhaften JSON sollte man zügig fangen, damit man ihn von anderen SyntaxError unterscheiden kann (nachträglich im stack-Property des Errors rumzufuhrwerken, um zu schauen, ob JSON.parse drin steht, halte ich für keine sinnvolle Lösung).
Strategien für's Errorhandling - gerade wenn viel Code läuft und ggf. größere Blöcke transaktional behandelt werden müssen, sind eine Wissenschaft für sich.
Okay, da kann ich soweit folgen. Ich hatte es zu schnell und einfach auf "try / catch ist böse" gemünzt und nicht konkret auf den Punkt. Sorry.