Andreas Rozek Lesehinweise letzte Änderungen Gästebuch-Eintrag Mitteilungen an den Autor  English Version  zur Leitseite zum vorherigen Thema zum nächsten Thema  zur ersten Seite zur vorherigen Seite zur nächsten Seite

Rhino_22 - Java-Ausnahmen

Zur Auswertung von Java-Methoden gehört auch das Abfangen und Behandeln evtl. geworfener Ausnahmen. "Rhino_22" befaßt sich mit diesem Problem.

Der Java-Teil des Beispieles definiert zu diesem Zweck zwei Methoden, die nichts anderes bewirken als je eine Java- und eine JavaScript-Ausnahme zu werfen - letztere wahlweise als "Wrapper" um eine Java-Ausnahme oder als "eigenständige" Ausnahme. Im JavaScript-Teil werden diese Methoden der Reihe nach aufgerufen und die geworfenen Ausnahmen abgefangen. Zusätzlich wird der Laufzeitumgebung eine Ausnahme "abgerungen" und deren Behandlung versucht.

Das Programm wird ohne weitere Parameter aufgerufen

  java Rhino Rhino_22.js

und liefert folgende Ausgabe:

  Rhino_22 - experiments with exceptions thrown from within Java

  trying to catch a Java exception
  caught Java exception:
   - class: class java.lang.NullPointerException
   - localizedMessage: (thrown from within Java)
   - message: (thrown from within Java)

  trying to catch a JavaScript exception
  caught JavaScript exception:
   - class: class java.lang.NullPointerException
   - localizedMessage: (thrown from within Java)
   - message: (thrown from within Java)

  trying to catch another JavaScript exception
  caught JavaScript exception:
  (no enumerable properties found)

  trying to catch an exception thrown by the run-time environment
  error while evaluating file "Rhino_22.js"
  (reason: "Rhino$RhinoException: Rhino.sleep: infinite "Duration" given")

Zu den wichtigen Erkentnissen aus diesem Beispiel gehören:

  • von einer Java-Methode geworfene Ausnahmen können problemlos abgefangen werden;

  • Rhino "verpackt" die geworfenen Ausnahmen zu diesem Zweck automatisch in eine "JavaScriptException", der Programmierer muß dies also nicht selbst besorgen;

  • von der Laufzeitumgebung geworfene Ausnahmen können auf diese Weise nicht erfaßt werden;

Man beachte übrigens auch die unterschiedliche Groß-/Kleinschreibung der "message"-Eigenschaft im Vergleich zu Java!

Quelltexte

Alle hier vorgestellten Programme und Skripte sind im Quelltext verfügbar:

Haftungsausschluß

Bitte beachten Sie auch den Haftungsausschluß des Autors!

http://www.Andreas-Rozek.de/Rhino/Acquainting/Rhino_22.html    (letzter Stand: 06.04.2002)