Programm beenden ohne System.exit() oder Runtime.exit()

jonnyj

Mitglied
ich kriege Punkteabzug wenn ich System.exit() oder Runtime.exit() im Programm im Studium verwende, gibt es alternative Befehle um an einer bestimmten Stelle das Programm zu beenden?....die Workarounds werden mitunter sowas von komplex, wenn man System.exit() oder Runtime.exit() nicht verwenden will...
gibt es da einen anderen einfachen Befehl oder Trick um das Programm an einer bestimmten Stelle zu beenden?

Vielen Dank für Hinweise!
 
Naja... der Sinn, warum System.exit() und dergleichen verboten sind, ist ja, dass man sauberen Control Flow in seinem Programm benutzt.
Welchen Grund gibt es denn bei dir, dass du irgendwo in mitten eines Calltrees dein Programm plötzlich einfach beenden lassen willst, ohne den Callstack sauber abzuräumen?
 
Gehen könnte (ist aber noch schlimmer als System.exit)
Java:
throw new OutOfMemoryError();
Aber richtig ist das, was @httpdigest sagt - das Programm so struktuieren, dass das nicht nötig ist
 
Gehen könnte (ist aber noch schlimmer als System.exit)
Java:
throw new OutOfMemoryError();
Schlimmer ist relativ – den Error könnte man zB in Tests immerhin abfangen 😛


EDIT: ich könnte mir durchaus vorstellen, das der Sinn des Verbots von exit zum Ziel hat, dass im Fehlerfall Exceptions sinnvoll genutzt werden...
 
gibt es da einen anderen einfachen Befehl oder Trick um das Programm an einer bestimmten Stelle zu beenden?
Das hier beendet das Programm garantiert auch an Ort und Stelle (hinterlässt aber hässliche Spuren):
Java:
private static void exit() {
  try {
    java.lang.reflect.Field f = 
        sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
    f.setAccessible(true);
    ((sun.misc.Unsafe)f.get(null)).getLong(0L);
  } catch (Exception e) {}
}
 
Jetzt nur noch den Bytecode ins Programm schreiben, per Classloader laden und dem Prüfer erzählen wollen, dass es wohl ein Java-Bug sein müsste...
 

Zurück
Oben