Announcement

Collapse
No announcement yet.

exception handling

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • exception handling

    hallo zusammen,

    noch eine frage: kann mir jemand erkären wie ich "richtig" ein globales exception handling durchführe? zur zeit habe ich sowas:
    <global-exceptions>
    <exception
    type="javax.servlet.ServletException"
    path="/pages/error.jsp"/>
    <exception
    type="java.lang.InstantiationException"
    path="/pages/error.jsp"/>
    </global-exceptions>
    das tut aber irgenwie nur sporadisch. außerdem weiß ich nicht wie ich auf die exception message in der jsp dann zugreifen kann, den diese würde ich
    schon gerne ausgeben. desweiteren wozu kann ich noch das attribut key angeben?

    ich dake für eure hilfe.

  • #2
    Hallo Jan,

    Mit key kannst Du noch eine message definieren, die dann aus den ApplicationResources geholt wird. Die kann man dann auf der Fehlerseite ausgeben.

    Du kannst ja im Exception-Handler die Exception in einen String schreiben (gleich richtig formatiert und mit einer entsprechenden Meldung) und diesen String dann als request-Attribut setzen. Damit kannst Du sie dann auf der Fehlerseite ausgeben.

    Eine Alternative ist ein JSP-exception handler. Du kannst z.b. in der web.xml

    <PRE>
    &lt;error-page&gt;
    &lt;exception-type&gt;java.lang.Exception&lt;/exception-type&gt;
    &lt;location&gt;/jsp/error/globalerror.jsp&lt;/location&gt;
    &lt;/error-page&gt;
    </PRE>

    definieren.

    Dann steht auf der globalerror.jsp implizit eine exception-Variable zur Verfügung.
    Die JSP könnte so aussehen:

    <PRE>
    &lt;%@ page language="java" isErrorPage="true" %&gt;

    &lt;html&gt;
    &lt;head&gt;

    &lt;/head&gt;
    &lt;body&gt;
    &lt;%= exception.toString() %&gt;

    &lt;/body&gt;
    &lt;/html&gt;
    </PRE>

    Gruß,

    Alwi

    Comment


    • #3
      hallo alwin,

      die struts methode interessiert mich sehr, jedoch habe ich gedacht der einfachheit halber erstmal reines jsp.
      und da habe ich es nicht hinbekommen. ich habe in der web.xml die error seite so definiert:
      <pre>
      <error-page>
      <exception-type>java.lang.Exception</exception-type>
      <location>/pages/error.jsp</location>
      </error-page>
      </pre>
      und die seite ist so aufgebaut wie du es kurz angerissen hast. allerdings wenn ein fehler auftritt, wird meist einfach nur ein
      teil der seite gerendert und der rest ist weiß. den fehler sieht man dann nur auf system.out. die error.jsp wird
      glaub ich nicht mal angefragt. ich wollte halt die error seite für ne allgemeine fehlerbehandlung (sorry tut uns leid ... bla bla)
      und dann noch eine weitere seite machen wo ich eine sessionTimoutException werfe, falls die session abgelaufen ist. aber da der einfach
      fall schon nicht funktioniert ..., weißt du nen tip?

      dank dir

      Comment


      • #4
        Hallo Jan,

        Das mit der error-page in der web.xml müsste eigentlich funktionieren. Du kannst alternativ auch in der JSP direkt die Fehlerseite setzen:

        <PRE>
        &lt;%@ page language="java" errorPage="error.jsp" %&gt;
        </PRE>

        Die Fehlerseite sollte in der ersten Zeile

        <PRE>
        &lt;%@ page language="java" isErrorPage="true" %&gt;
        </PRE>

        haben.

        Im Zweifelsfall kannst Du auch das Struts-Servlet ableiten und einen großen try-catch-block in der doPost-Methode machen. Das hilft immer :-) Anschließend noch eine schöne Fehlermeldung zusammenbauen (mit exc.getStackTrace() hat man Zugriff auf die komplette Exception) und auf eine Fehlerseite forwarden.

        Gruß,

        Alwi

        Comment

        Working...
        X