尝试..捕捉场景

时间:2014-04-27 03:00:58

标签: java android try-catch

我有时会发现自己处于如下情景中。尽可能简单地陈述问题

"我有时会在try / catch语句中创建一个Java代码块。我没有使用捕获物,所以我把它留空了。为什么这是错的?"

 boolean operationSucceeded = false;                 
 JSONObject response = null;               

 try{ //Java wants you to surround JSONObject parsing with try/catch, and they usually have you surround lots of other things in try/catches

   response = new JSONObject(responseFromServerAboveNotRelevantToThisCodeBlock)
   //do something with response
   operationSucceeded = true;                      
 } 
 catch (JSONException e) {                  
     //what would happen here??                    
   }        

所以在这种情况下,我没有使用我能想到的catch块。我不需要在任何地方登录,并且没有再次将状态设置为false,因为我已经假设它是假的,并且如果操作有效则设置为true (最后一行代码)。

所以我只有一个空的捕获,这总是很糟糕,代码分析器说错了,等等。我该怎么办?我的代码和思路都是错误的,需要在逻辑上进行重组,以便在我的捕获中实际发生可操作的事情吗?

非常感谢。

4 个答案:

答案 0 :(得分:1)

在我看来,try-catch语句的目的是防止程序崩溃,冻结等等,即使出现错误也是如此。你可以做类似的事情," e.printstacktrace()"或者你可以继续,但最好让你的代码表明你希望它做什么。

答案 1 :(得分:0)

始终处理可能的错误是一种很好的做法,日志对于更快地发现错误非常有用。

我认为那更好......

     boolean operationSucceeded = true;                 
 JSONObject response = null;               

 try{ //Java wants you to surround JSONObject parsing with try/catch, and they usually have you surround lots of other things in try/catches

   response = new JSONObject(responseFromServerAboveNotRelevantToThisCodeBlock)
   //do something with response                     
 } 
 catch (JSONException e) {                  
     operationSucceeded = false;   
    // Some log here

   }  

答案 2 :(得分:0)

我同意,当发现异常时,通常没有任何相关性可以/应该做。甚至记录某些内容有时也是不可取的。

但是当参与代码审查时,我至少会期待一条评论,说明该异常被故意忽略。如果它不是一个明显的案例,我希望评论说明为什么它被故意忽略。

答案 3 :(得分:0)

Try / Catch块对于处理程序因异常而终止非常有用。 try块中的代码可能会抛出异常,并且可以实现catch块以在异常事件中继续执行程序。在您的情况下,虽然没有必要再次将标志设置为false,但您可以编写一些有用的代码来通知用户代码将要终止的原因。它对开发人员来说也很有用,因为你可以通过编写e.printStackTrace()来找出抛出的异常。