2016-01-13 223 views
-1

调试此代码时,该对象是使用参数创建的。但是在运行设置参数的行后,代码跳转到catch块内的return语句,但变量e(例外)中没有错误。捕获错误,但没有错误

public cartao parseJSON(String jsonParam) { 

    cartao jsonCartao = new cartao(); 

    try { 
     JSONObject json= (JSONObject) new JSONTokener(jsonParam).nextValue(); 
     jsonCartao = new cartao(json.get("NomeCartao").toString(), (double)json.get("SaldoRestante"), json.get("NomePessoa").toString(), (double)json.get("ValorUltimoCredito"), json.get("DataUltimoCredito").toString(), (boolean)json.get("Status")); 
     return jsonCartao; 
    } catch (Exception e) { 
     return jsonCartao; 
    } 
} 

在调试代码,代码跳转到return jsonCartao;,不e.printStackTrace();

http://imgur.com/OhwmMw5

+0

您只有在一个错误的'try'块抛出进入'catch'块的相关章节。你想做什么? – Arc676

+0

您可以添加打印错误并在此显示吗?我高度怀疑'e == null'。 – MrHug

+1

在返回之前添加e.printStacktrace()以查看发生了什么 – Jens

回答

0

您的代码可以使用一些改进。像cartao这样的类名应该以UpperCase开头。您可以在函数结束时返回对象,无需重复代码。在catch里面,你应该分析你的错误。您也可以返回正确的类型,而不是返回Object并将其转换为其他内容。

public Cartao parseJSON(String jsonParam){ 

    Cartao jsonCartao = new Cartao(); 

    try { 
     JSONObject json = (JSONObject) new JSONTokener(jsonParam).nextValue(); 
     jsonCartao = new Cartao(
      json.getString("NomeCartao"), 
      json.getDouble("SaldoRestante"), 
      json.getString("NomePessoa"),  
      json.getDouble("ValorUltimoCredito"), 
      json.getString("DataUltimoCredito"), 
      json.getBoolean("Status")); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return jsonCartao; 
} 

PS:在调试过程中,添加断点有助于代码

0

不要在catch块返回jsonCartao,你应该这样做

System.out.println("Exception thrown :" + e);

这样你就可以分析一些东西。