在下面的代码中,我想知道是否在for循环中抛出异常并且错误消息被添加到catch块中的JSON对象,程序将在异常之后返回到for循环的下一次迭代抛出?或者它会打破for循环并返回对象吗?
JSONOBject obj = new JSONObject();
try
{
for(i=0; i<10; i++)
{
//do things in here that may throw an exception
obj.put("message","did not throw exception");
}
{
catch(Exception e)
{
obj.put("message",e.getMessage());
}
return obj;
答案 0 :(得分:2)
异常将终止该方法,因为在catch块之后,下一个语句是return
。
如果要继续循环,请将整个try / catch放在循环中,如:
for (.... whatever ...)
{
try
{
something
}
catch(Exception e)
{
obj.put("message",e.getMessage());
}
}
在这种情况下,循环将执行所有指定的迭代,并且捕获的每个异常都会向obj
添加新消息。
答案 1 :(得分:0)
否 - 循环将从抛出异常时退出 - 在catch块完成之后。
答案 2 :(得分:0)
在try块中,一旦抛出错误,该块中的执行就会停止并且控制跳转到catch块。因此,在您的情况下,for循环的其余部分不会执行。
如果您希望继续执行for循环,可以将try catch移动到for循环中。