Pierced
I'm new here

BeanShell: Abfangen von Fehlern

Jump to solution

Ich habe mal wieder eine Frage :smileyconfused: ... eher eine Anregung:

Ist es möglich, Fehler abzufangen, die ein Beanshell produziert? Ich meine Laufzeitfehler aller Art.

Die Situation ist:

Bei einem BeanShell-Skript fehlte ein Import-Statement.

Es wurde jedoch an keiner Stelle ein Fehler ausgegeben. Ist es möglich, diesen Fehler irgendwo sichtbar zu machen - vielleicht in einer globalen Variable, die man am Ende des Renderings einer Seite auslesen könnte?

Das würde die Suche nach Fehlern ungemein erleichtern.

0 Kudos
1 Solution

Accepted Solutions
gockel
Crownpeak employee

Hallo Georg,

kannst du bitte näher beschreiben wie das Skript aufgerufen wird und was der Fehler ist.

Bei mir funktioniert das nämlich einwandfrei.

Template:

=======

blubs

$CMS_RENDER(script:"hurz")$

=======

Skript:

=====

context.logInfo("start");

context.logInfo(MyNotImportedClass.class);

=====

Fehler der Vorschau:

scriipt_hurz.jpg

View solution in original post

0 Kudos
3 Replies
gockel
Crownpeak employee

Hallo Georg,

kannst du bitte näher beschreiben wie das Skript aufgerufen wird und was der Fehler ist.

Bei mir funktioniert das nämlich einwandfrei.

Template:

=======

blubs

$CMS_RENDER(script:"hurz")$

=======

Skript:

=====

context.logInfo("start");

context.logInfo(MyNotImportedClass.class);

=====

Fehler der Vorschau:

scriipt_hurz.jpg

0 Kudos

Danke... gewusst wie, dann klappt's auch 🙂

Trotzdem noch als Anregung:

Wenn man eine Variable (etwa #global.preview.errors o.ä.) mit genau solchen Fehlern auslesen könnte, wäre das eine noch größere Hilfe für die Entwicklung:

So könnte man sich die Fehler direkt am Ende einer Seite ausgeben lassen.

(Wir benutzen ein Flag, um Debug-Meldungen schon während des Renderings ein/ausschalten zu können).

0 Kudos

Das gibt es schon:

$CMS_SET(#global.collectLogs, 4)$ $-- -1: off, 0: TRACE, 1: DEBUG, 2: INFO, 3: WARN, 4: ERROR --$

...some template code..

$CMS_FOR(logEntry, #global.logs)$

  $CMS_VALUE(entry)$<br />

$CMS_END_FOR$

(Achtung, den Code habe ich so hingeschrieben, bestimmt fehlt irgendwo eine Klammer)

Code ist für FirstSpirit ab v4, unter v3.1 war die Syntax etwas anders.

[EDIT]

Noch paar Hinweise: Am besten, man beschränkt das Sammeln von Log-Meldungen auf die Vorschau. Ansonsten sollte man nach der Ausgabe die Liste noch zurücksetzen (#global.resetLogs).

Für "#global.collectLogs" sollten ab 4.1 statt der Zahlen auch "null" für "aus" und die Namen des Log-Levels ("WARN", "ERROR", etc.) funktionieren.

Es werden übrigens immer auch die Meldungen mit höherem Level eingesammelt, für INFO also auch WARN und ERROR.

Peter