Salve a tutti.
Oggi leggendo la guida a jsp mi sono imbattuto in una parte di codice che non riesco a capire a livello logico.
La pagina di riferimento è la seguente: link
nella classe jrun__prova2ejspa è presente un try-catch che esegue un controllo e a un successivo cast sul tipo di classe catturata, ovvero:
il segmento di codice che mi lascia perplesso è il seguente:codice:try { out.print("<!-- PROVA.JSP-->rnrn<html>rnrn<body>rnrn"); out.println ("PRIMA PROVA JSP"); out.print("rnrn</body>rnrn</html>"); } catch(Throwable t) { if(t instanceof ServletException) throw (ServletException) t; if(t instanceof java.io.IOException) throw (java.io.IOException) t; if(t instanceof RuntimeException) throw (RuntimeException) t; throw JRunJSPStaticHelpers.handleException(t, pageContext); } finally { __jspFactory.releasePageContext(pageContext); }
codice:if(t instanceof ServletException) throw (ServletException) t; if(t instanceof java.io.IOException) throw (java.io.IOException) t; if(t instanceof RuntimeException) throw (RuntimeException) t;
la domanda è: perche' dopo che ho verificato che t sia una istanza di tipo T, la rilancio facendo un cast?
da quello che so (quindi molto probabilmente sbaglio) l'istanza puntata dall'handler t si porta sempre dietro il suo tipo, proprio perche' java è un linguaggio a binding dinamico... pertanto mi sembra inutile il cast.
Sbaglio?? se si, perche'? non avrebbe piu' senso una catch scritta in questo modo:
con tutto lo spaghetti code che rimuoverei.. ma vabo' quello è un altro complesso che non c'entra con l'argomento del topic....codice:try { out.print("<!-- PROVA.JSP-->rnrn<html>rnrn<body>rnrn"); out.println ("PRIMA PROVA JSP"); out.print("rnrn</body>rnrn</html>"); } catch(Throwable t) { if( t instanceof ServletException || t instanceof java.io.IOException || t instanceof RuntimeException) { throw t; // t rimane sempre e comunque una classe di tipo Throwable, quindi rilanciabile } else { throw JRunJSPStaticHelpers.handleException(t, pageContext); } } finally { __jspFactory.releasePageContext(pageContext); }
spero che qualcuno mi possa rispondere a questo dubbio esistenziale =D
Grazie in anticipo ^^
edit:
maledizione non ho visto il subforum java =( chiedo scusa..
Un moderatore puo' spostarmi la discussione perfavore? chiedo ancora scusa =(

Rispondi quotando
