2012-07-05 66 views
-2

以下哪個代碼是更好地執行嘗試捕捉VS的if else

public string myfunc(JSONArray funcargs){ 

    int ctxHandle; 
    String StringParam=null; 
    JSONObject jObj=null; 

    try { 
     ctxHandle = funcargs.getInt(2); 
     if(funcargs.length() == 4) { 
      try { 
       StringParam = funcargs.getString(3); 
      } catch (JSONException jsonEx) { 
       jObj = funcargs.getJSONObject(3); 
      } 
     } 
    } catch (JSONException jsonEx) { 
     SendJS = "javascript:" + FailureCallBack + "('" + jsonEx.getMessage() + "')"; 
     sendJavascript(SendJS); 
     return null; 
    } 

    //This will return an integer 
    ret_val = get_data(ctxHandle); 
    SendJS = "javascript:" + SuccessCallBack + "('" + Integer.toString(ret_val); 
    if(StringParam != null) 
     SendJS += "','" + StringParam + "')"; 
    else if(jObj != null) 
     SendJS += "','" + jObj + "')"; 
    else 
     SendJS += "')"; 

    sendJavascript(SendJS); 
    return null; 
} 

OR

public string myfunc(JSONArray funcargs){ 

    int ctxHandle; 
    String StringParam=null; 
    JSONObject jObj=null; 

    try{ 
     ctxHandle = funcargs.getInt(2); 
     //This will return an integer 
     ret_val = get_data(ctxHandle); 
     SendJS = "javascript:" + SuccessCallBack + "('" + Integer.toString(ret_val); 
     if(funcargs.length() == 4) { 
      try { 
       StringParam = funcargs.getString(3); 
       SendJS += "','" + StringParam + "')"; 
      } catch (JSONException jsonEx) { 
       jObj = funcargs.getJSONObject(3); 
       SendJS += "','" + jObj + "')"; 
      } 
      SendJS += "')"; 
     } 
    } catch (JSONException jsonEx) { 
     SendJS = "javascript:" + FailureCallBack + "('" + jsonEx.getMessage() + "')"; 
    } 

    sendJavascript(SendJS); 
    return null;       
} 

個人從Java if vs. try/catch overhead線程我明白try/catch應該只在你身在何處的情況下使用結果不確定,並且可以處理異常,但是如果可以保存參數,則會產生一些疑問,儘管將整個代碼放在try catch塊中對我來說沒有任何意義。

需要幫助。

+4

你可以從代碼中刪除不相關的部分嗎?並指出不同的部分? – Thilo

+0

@Thilo整個想法是將函數作爲一個整體進行分析,而不是僅僅從零散的角度看它,而只看它的15行代碼。所以我發佈:) – nimish

回答

1

代碼不會做同樣的事情,但如果您修復了第二個示例,我會說它更好,因爲您將相關的代碼放在一起。

但是,我建議你應該做你認爲更清楚的事情,因爲第一個例子可能是對的,它可能是一個更好的選擇。

0

通常我們會在我們期望出現錯誤的地方使用try catch。例如,你要用另一個數字來劃分一個數字,它是零,肯定會拋出錯誤。那裏我們將使用try catch。

這是爲了捕捉運行時錯誤,我們使用try catch。

您不應該在所有代碼中使用try catch,但使用try catch會減少顯示異常的機會。