In Java theoretisch können Sie nur Throwables
werfen.
Dies wird von der Sprache erlaubt und beim Laden der Klasse überprüft. Aber wenn Sie die Klassenprüfung deaktivieren
%Vor% Dann können Sie eine Klasse ausführen, die jede -Klasse (nicht abgeleitet von Throwable
) ( Beispiel) auslöst )
Warum?
Warum ist es so konzipiert? Dies bedeutet eine virtuelle Maschine, die es erlaubt, Objekte zu werfen und einen Verifizierer, der falschen Code herausfiltern muss. Als ob irgendein Code falsch sein könnte . Es ist nicht der Code, es ist das Design!
Warum?
Warum ist es so konzipiert? Dies bedeutet eine virtuelle Maschine, die es erlaubt, Objekte zu werfen und einen Verifizierer, der falschen Code herausfiltern muss. Als ob irgendein Code falsch sein könnte. Es ist nicht der Code, es ist das Design!
Warum?
Ganz einfach, weil das Design aus fast allen Perspektiven funktioniert.
Nun, was wäre die Alternative?
Ich denke, du müsstest eine besondere Art von "Dingen" haben, die KEINE Instanzen von Klassen sind, die nur zum Zweck des Werfens entworfen wurden.
Das würde erfordern:
Am Ende des Tages wäre die Java-Sprache komplexer und für den Programmierer schwieriger zu verwenden. Und zu welchem Zweck? Um die Aufgabe des Verifizierers etwas zu vereinfachen?
Entschuldigung, aber wenn Sie es zu seiner logischen Schlussfolgerung bringen, ist diese Idee ein Nichtstarter.
Und ehrlich gesagt wen interessiert's , wenn Sie die JVM durch Deaktivieren des Verifizierers brechen können. Es ist wie beschweren, dass Sie sich schießen können, wenn Sie geladene Pistolen jonglieren.
Tags und Links java jvm-hotspot jvm