尝试Catch vs If Else

时间:2012-07-05 06:55:24

标签: java

以下哪个代码更适合实现

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但是如果可以保存if if else会生成一些怀疑虽然把整个代码放在try catch块中对我来说没有意义。

需要帮助。

2 个答案:

答案 0 :(得分:1)

代码并没有做同样的事情,但是如果你修复了第二个例子,我会说它更好,因为你把相关的代码放在一起。

但是,我建议你应该做你认为更清楚的事情,因为第一个例子可能是对的,对你来说可能是更好的选择。

答案 1 :(得分:0)

通常我们在预期会出现错误的地方使用try catch。例如,你要用另一个数字来划分一个数字,它是零,肯定会抛出错误。我们将使用try catch。

这是为了捕获运行时错误,我们使用try catch。

您不应该在所有代码中使用try catch,但使用try catch会减少显示异常的机会。