请教异常处理的finally finally中可以处理一些释放资源的操作,比如关闭文件,关闭数据库链接等等。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一段的代码无论如何都会执行System.out.println("不管是否发生异常,都要执行此代码。") ; 第二段代码如果发生异常那么System.out.println("不管是否发生异常,都要执行此代码。") ; 就不会执行了finally的作用是在发生异常的时候才体现的。如果代码写在finally里面那么发生异常后也会执行囊而代码,如楼上所说的操作 声明2点1 两段先后的代码,肯定是先后执行的,前面的执行完了,没有返回或者退出,肯定要执行后面的2 在一段代码里面,比如一个try catch finally 的结构,才有finally代码一定执行的说法。 你用catch这个异常当然会执行了,你不catch异常,就让它抛出,肯定不会执行最后一句 你在try catch中写一个return 就明白了 这段代码: public class Demo02{ public static void main(String args[]){ // 从运行时处接收参数 int i = 0 ; int j = 0 ; System.out.println("程序代码执行之前。") ; try{ i = Integer.parseInt(args[0]) ; j = Integer.parseInt(args[0]); // 跟上可能发生错误的代码段 ---------上面的异常发生后直接跳到catch中执行,后面两条打印不在执行-----------------System.out.println(i / j) ; System.out.println("---------------------------") ; // 只要是程序运行时产生的异常肯定可以使用Exception进行接收 }catch(Exception e){ System.out.println("异常处理") ; }finally{ System.out.println("不管是否发生异常,都要执行此代码。") ; } ---------上面的异常发生后直接跳到catch中执行,try...catch....finally外面的语句也不再执行,即后面的这条打印不会执行了-----------------System.out.println("程序代码执行之后。") ; } }; 修改后的: public class Demo02{ public static void main(String args[]){ // 从运行时处接收参数 int i = 0 ; int j = 0 ; System.out.println("程序代码执行之前。") ; try{ i = Integer.parseInt(args[0]) ; j = Integer.parseInt(args[0]); // 跟上可能发生错误的代码段 System.out.println(i / j) ; System.out.println("---------------------------") ; // 只要是程序运行时产生的异常肯定可以使用Exception进行接收 }catch(Exception e){ System.out.println("异常处理") ; } ---------上面的异常发生后直接跳到catch中执行,try...catch....finally外面的语句也不再执行,即后面的两条打印都不会执行了----------------- System.out.println("不管是否发生异常,都要执行此代码。") ; System.out.println("程序代码执行之后。") ; } }; 可以这样理解: try 里面的语句一直执行到发生异常的那句(后面有的语句也不执行了)为止然后跳到该异常对应的catch语句中去执行,之后执行finally里面的语句后即整个方法结束,后面有任何try-catch-finally外的任何东西都不执行了。当然没有任何异常发生的话除了catch里面的语句不执行外其它都执行。注意:finally 里面的东西无论有无异常发生都会执行,包括try里面有return;语句。有一点除外:catch里面有System.exit()方法停止虚拟机运行。 jdbc注册两次驱动问题,急求答案 java基础题,伤脑筋 java局部变量赋值 求助java-cgi-xml 请教一个JNI问题;请高手帮忙 运行后打字不能发送 JAVA新手求助,程序老是一卡一卡的 我想从JAVA中调用一个外部的可执行的C程序,可以吗?能得到程序执行后的返回值吗? 对测试工具再次散分100,讨论JMeter的使用 怎样利用jbuilder制作象exe文件一样直接运行的程序?高分!! java applet 资料 JTree问题
第二段代码如果发生异常那么System.out.println("不管是否发生异常,都要执行此代码。") ; 就不会执行了finally的作用是在发生异常的时候才体现的。如果代码写在finally里面那么发生异常后也会执行囊而代码,如楼上所说的操作
1 两段先后的代码,肯定是先后执行的,前面的执行完了,没有返回或者退出,肯定要执行后面的
2 在一段代码里面,比如一个try catch finally 的结构,才有finally代码一定执行的说法。
public class Demo02{
public static void main(String args[]){
// 从运行时处接收参数
int i = 0 ;
int j = 0 ;
System.out.println("程序代码执行之前。") ;
try{
i = Integer.parseInt(args[0]) ;
j = Integer.parseInt(args[0]);
// 跟上可能发生错误的代码段 ---------上面的异常发生后直接跳到catch中执行,后面两条打印不在执行-----------------
System.out.println(i / j) ;
System.out.println("---------------------------") ;
// 只要是程序运行时产生的异常肯定可以使用Exception进行接收
}catch(Exception e){
System.out.println("异常处理") ;
}finally{
System.out.println("不管是否发生异常,都要执行此代码。") ;
} ---------上面的异常发生后直接跳到catch中执行,try...catch....finally外面的语句也不再执行,即后面的这条打印不会执行了-----------------System.out.println("程序代码执行之后。") ;
}
};
修改后的: public class Demo02{
public static void main(String args[]){
// 从运行时处接收参数
int i = 0 ;
int j = 0 ;
System.out.println("程序代码执行之前。") ;
try{
i = Integer.parseInt(args[0]) ;
j = Integer.parseInt(args[0]);
// 跟上可能发生错误的代码段
System.out.println(i / j) ;
System.out.println("---------------------------") ;
// 只要是程序运行时产生的异常肯定可以使用Exception进行接收
}catch(Exception e){
System.out.println("异常处理") ;
}
---------上面的异常发生后直接跳到catch中执行,try...catch....finally外面的语句也不再执行,即后面的两条打印都不会执行了----------------- System.out.println("不管是否发生异常,都要执行此代码。") ;
System.out.println("程序代码执行之后。") ;
}
};
可以这样理解:
try 里面的语句一直执行到发生异常的那句(后面有的语句也不执行了)为止然后跳到该异常对应的catch语句中去执行,之后执行finally里面的语句后即整个方法结束,后面有任何try-catch-finally外的任何东西都不执行了。
当然没有任何异常发生的话除了catch里面的语句不执行外其它都执行。
注意:finally 里面的东西无论有无异常发生都会执行,包括try里面有return;语句。有一点除外:catch里面有System.exit()方法停止虚拟机运行。