try {
} catch (Exception e) {
%>
alert("<%=e.getMessage()%>");
<%
}
%>
parent.window.location.reload();
<%
這樣的話可以正常alert,但不管有無Exception都會refresh。希望若發生Exception就不refresh,因此加上return。
try {
} catch (Exception e) {
%>
alert("<%=e.getMessage()%>");
<%
return;
}
%>
parent.window.location.reload();
<%
加上return後的確有Exception就沒refresh,可是連alert也不見了。
請問是什麼原因?又何解?
感謝!
倒不如設定好在什麼情況下要reload()。
若在處理好exception後仍有後續的操作, 用 finally.
try{
//somethingThatMayThrowException();
}
catch(Exception e){
//printException(e.toString());
}finally{
//cleanUp();
}
boolean hasException = false;
try{
doSomething();
}catch(Excpetion e){
hasException = true;
alert();
}
if(!hasException){
reload();
}
謝謝你的回答。不好意思我沒表達清楚,我知道這樣可以解。但我是好奇我原來的問題出在哪?為什麼alert會不見?似乎跟jsp、js有關?
其實要alert("<%=e.getMessage()%>");成立, 首先你的Exception 物件e本身不可以為null. 即在沒有Exception的時候, 本身就已經會引發另一個NullPointerException.
可能是文中敘述的問題,return
需要包一個 if 才不會編譯錯誤。
try {
throw new Exception("error");
} catch (Exception e) {
%>
alert("<%=e.getMessage()%>");
<%
if (true)
return;
}
%>
parent.window.location.reload();
<%
因為javascript是asyn return比alert的function早完成