iT邦幫忙

0

jsp 一旦return,alert即失效?

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也不見了。

請問是什麼原因?又何解?
感謝!

fillano iT邦超人 1 級 ‧ 2020-06-19 14:52:08 檢舉
這樣不就把前後端的邏輯混在一起了XD
@fillano
因為這是別人的框架啦。try裡面只有一句,調用後端的方法處理。
fillano iT邦超人 1 級 ‧ 2020-06-20 13:33:32 檢舉
XD
0
BMG50
iT邦新手 5 級 ‧ 2020-06-19 10:10:47

倒不如設定好在什麼情況下要reload()。
若在處理好exception後仍有後續的操作, 用 finally.
try{
//somethingThatMayThrowException();
}
catch(Exception e){
//printException(e.toString());
}finally{
//cleanUp();
}

看更多先前的回應...收起先前的回應...

finally是不管有沒有Exception都執行,我是要異常後就不刷新,但是要alert。

BMG50 iT邦新手 5 級 ‧ 2020-06-19 10:55:17 檢舉
boolean hasException = false;
try{
    doSomething();
}catch(Excpetion e){
    hasException = true;
    alert();
}
if(!hasException){
    reload();
}

謝謝你的回答。不好意思我沒表達清楚,我知道這樣可以解。但我是好奇我原來的問題出在哪?為什麼alert會不見?似乎跟jsp、js有關?

BMG50 iT邦新手 5 級 ‧ 2020-06-19 11:39:53 檢舉

其實要alert("<%=e.getMessage()%>");成立, 首先你的Exception 物件e本身不可以為null. 即在沒有Exception的時候, 本身就已經會引發另一個NullPointerException.

0
小碼農米爾 Mir
iT邦研究生 1 級 ‧ 2020-06-19 12:34:43

jsp中return的问题

可能是文中敘述的問題,return 需要包一個 if 才不會編譯錯誤。

try {
     throw new Exception("error");
} catch (Exception e) {
    %>
        alert("<%=e.getMessage()%>");
    <%
    if (true)
        return;
}
%>
parent.window.location.reload();
<%
0
lkjmn1234
iT邦新手 5 級 ‧ 2020-06-19 15:22:31

因為javascript是asyn return比alert的function早完成

不是啦,他的try...catch是在jsp,jsp跑完輸出成html,網頁收到後開始執行,才跟javascript有瓜葛。

我要發表回答

立即登入回答