5 回答
TA贡献36条经验 获得超15个赞
楼主你说的这句话“当try.......catch 语句补捉到Myexception异常后 应该会终止运行才对啊!”
这里你有一个理解错误:如果发生异常你不捕获, 程序才会卡在发生异常的地方,这里你捕获了,程序当然可以继续跑下去啊,否则捕获异常是为了什么呢?
出红字是因为e.printTrace(); 如果你把这行删掉或者换成System.out.println(e.getMessage()); 就没有红字异常了
关于finally: 如果你在try里加一句 int i = 1/0; 他就不会输出 操作结束了,程序会卡在这行代码上因为你并没有捕获除0异常,这个时候如果你加了finally在里边输出“操作结束”,重新跑程序可以输出“操作结束”了但是还是会有报错信息,因为 finally代码块你可以理解为:无论如何都要做里边的事
TA贡献1017条经验 获得超1032个赞
try{ .... int a=2/0;//发生异常 ....//得不到执行,跳出到catch块 }catch(Exception e)//匹配异常 { //执行异常处理。 }finally { //不管是否发生异常,finally块都会得到执行。 } ...//继续执行以下代码
TA贡献3593条经验 获得超0个赞
TA贡献19条经验 获得超6个赞
楼主你说的这句话“当try.......catch 语句补捉到Myexception异常后 应该会终止运行才对啊!”
这里你有一个理解错误:如果发生异常你不捕获, 程序才会卡在发生异常的地方,这里你捕获了,程序当然可以继续跑下去啊,否则捕获异常是为了什么呢?
出红字是因为e.printTrace(); 如果你把这行删掉或者换成System.out.println(e.getMessage()); 就没有红字异常了
关于finally: 如果你在try里加一句 int i = 1/0; 他就不会输出 操作结束了,程序会卡在这行代码上因为你并没有捕获除0异常,这个时候如果你加了finally在里边输出“操作结束”,重新跑程序可以输出“操作结束”了但是还是会有报错信息,因为 finally代码块你可以理解为:无论如何都要做里边的事
try{
....
int a=2/0;//发生异常
....//得不到执行,跳出到catch块
}catch(Exception e)//匹配异常
{
//执行异常处理。
}finally
{
//不管是否发生异常,finally块都会得到执行。
}
...//继续执行以下代码
添加回答
举报