# [JSP] errorpage: Zugriff auf exception-Objekt



## citizen_erased (19. Mai 2004)

Tach!

Diese Seite soll einen Fehler auslösen und in an einer Fehlerseite weiterleiten.

```
<%@ page language="java" errorPage="/Error_new2.html" %>
<html>
<head>
    <title>Fehlerseite</title>
</head>
<body>
<%
if (true) {
	throw new java.io.IOException("test");
}
%>
</body>
</html>
```

Die Fehlerseite Error_new2.html zeigt den Fehler an. Zwei Versionen:

```
<%@ page isErrorPage="true" %>
<html>
<head>
	<title>error1</title>
</head>
<body>
	Folgende Ausnahme wurde geworden: [b]<%= exception.getClass().getName() %>[/b]
	

	Folgender Text wurde &bermittelt: [b]<%= exception.getMessage() %>[/b]
</body>
</html>
```


```
<%@ page isErrorPage="true" %>
<%! String exClassName = exception.getClass().getName(); %>
<%! String exTest = exception.getMessage(); %>
<html>
<head>
	<title>error2</title>
</head>
<body>
	Folgende Ausnahme wurde geworden: <%= exClassName  %>
	

	Folgender Text wurde &bermittelt: <%= exTest %>
</body>
</html>
```

Die erste gibt mir den Klassennamen und die Botschaft der Ausnahme aus. In der zweiten Version erhalte ich einen Fehler:
Die Fehlermeldung lautet:


> Semantic Error: No field named "exception" was found in type "_Error_0new2__html".



Ich stehe völlig auf dem Schlach. Normalerweise sollte ich auf das exception-Objekt zugreifen können, wenn ich das Dokument als "errorpage" kennzeichne. Warum also scheint er in der zweiten Seite das Objekt nicht zu kennen?

Als Applikations-Server benutze ich Resin 2.0.

Vielen Dank!


----------



## citizen_erased (19. Mai 2004)

ok, alles klar.

die zuweisung mit 
	
	
	
	





```
<%!
```
 hat in der gesamten seite geltung. in der jsp-implementierungsklasse wird also eine klassenweite variable initialisiert.
allerdings hat man auf  das exceptions-objekt wohl nur in den "typischen" servlet-methoden zugriff (bei resin: public void
  _jspService(..))

richtig muss es heissen: 
	
	
	
	





```
<% String exClassName = exception.getClass().getName(); %>
<% String exTest = exception.getMessage(); %>
```
dann erfolgt die initialisierung innerhalb dieser methode.

hm....


----------



## citizen_erased (21. Mai 2004)

aber moment mal :?: 

wie kann denn eine variable im "scope" einer methode sichtbar sein, in der restlichen klasse aber nicht??


----------

