java异常巩固
1.try…catch…finally如何使用?
答:try表示可能会抛出异常的语句块,catch是try出现异常后的接收者,finally中的语句无论如何代码都会执行,除非JVM关闭,通常,它会在语句块中放置一些释放资源的代码。
2.printStackTrace的用法和含义?
答:如果JVM追溯到调用栈最底部main方法时,仍没有找到异常代码块,则
调用异常对象printStackTrace()方法,打印方法调用栈的异常信息,当程序
出现异常,可以看栈踪迹。
3.throws和throw的用法和区别?
答:throws使用方法是在main方法后面继承的,一般是交给JVM使用,throw是手动抛出异常。
4.如何自定义异常?
答:继承Exception或runtimeException。
5.finally和final的区别?
答:finally中的语句块表示一定要执行的代码,而final定义的变量相当于是常量,不可修改,方法相当于是最终方法,不可重写。即一个必须执行且作为异常处理的一部分,另一个不可修改。
小练习:
1、输入至少五个整数。
import java.util.*; class testP{ public static void main(String[] args) { try{ if(args.length<5) throw new Exception(); int intarray[]=new int[args.length]; for (int i=0;i<args.length;i++) intarray[i]=Integer.parseInt(args[i]); for (int i=0;i<intarray.length;i++) System.out.println(intarray[i]+""); } catch (NumberFormatException e) { System.out.println("请输入整数:"); } catch (Exception e) { System.out.println("请输入至少五个整数:"); } } }
finally块在什么时候执行?try{}里有一个return语句,那么紧跟在这个try后的finally{}中的代码是否会被执行?何时被执行,在return之前还是之后?
答:会被执行,且在return(执行后会返回值且跳出函数体)之前。若return在finally中,则该return会覆盖其它的return,当然也是先执行finally语句。
public class Test{ public static int testFianlly{ try{ return 1; }catch (Exception e) { return 0; }finally{ System.out.println("exection finally"); } } public static void main(String[] args) { int result=testFianlly(); System.out.println(result); } } /* 运行结果: execute finally 1 */ public class Test{ public static int testFinally(){ try{ return 1; }catch(Exception e){ return 0; }finally{ System.out.println("exeception finally"); return 3; } } public static void main(String[] args) { int result=testFinally(); System.out.println(result); } } /* exeception finally 3 */