在try这个语句块中调用JSONObject.fromObject(obj) 这个方法,
不走catch,直接走finally
finally 必定执行
如果不走完try(出现异常)就 一定会走catch,
除非try/catch 抓错异常,在方法上面 throw了
个人猜测是,catch中的异常级别太低。而JSONObject.fromObject(obj) 抛的异常级别高。你可以将catch中的异常换成最高级别的Exception试试
只是反对一下“思念的眷恋”这个兄弟的回答
public class test5 {
public void A() throws Exception {
// 这里向上抛出异常
}
}
public class test4 {
public void testName(){
try {
new test5().A(); // 抓的异常级别小于抛出的级别,编译不通过
} catch (NullPointerException e) {
// NullPointerException extends RuntimeException extends Exception
// 这是异常的继承关系
}
}
}
至于为什么会直接走finally,这边断点调一下,具体情况不清楚。