2012-07-05 47 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会减少显示异常的机会。