异常处理
try{ }包围可能出现异常的语句,catch{ }包含异常处理语句,一旦出现异常就立即结束try{ }块,执行catch{ }块。e.printStackTrace()会打印出方法调用的路径。
如果抛出多个异常就用多个catch{ }分别捕获;也可用一个catch{ }块,但不能判断是哪种类型,需要用instanceof进行类型判断。
catch (FileNotFoundException | ParseException e) {
if (e instanceof FileNotFoundException)
System.out.println("d:/LOL.exe不存在");
if (e instanceof ParseException)
System.out.println("日期格式解析错误");
}
文件未找到异常FileNotFoundException是Exception的子类,可以用父类代替子类。
无论是否出现异常,都会执行finally{ }中的语句。
如果函数的连环调用,则在一个函数中出现的异常有两种处理方法,一是try{ }块包围,二是用throws抛出,使调用该函数的函数来处理,处理方法仍是这两种。
可以在方法内抛出FileNotFoundException,声明抛出Exception,捕获Throwable。
throws出现在方法声明上,表示方法可能抛出异常。throw出现在方法体内,一定会抛出一个异常。
try{ }catch{ }finally{ }中的return语句最终返回的值是什么?
异常分类
可查异常:必须进行处理的异常,不处理不能通过编译。如FileNotFoundException。
运行时异常RuntimeException:不必用try{ }catch{ }处理的异常,当然也可以用;可以通过编译。
常见运行时异常:除数不能为0异常:ArithmeticException ,下标越界异常:ArrayIndexOutOfBoundsException ,空指针异常:NullPointerException 。
Error和Exception都继承Throwable类,Error是很重大的错误,如内存不足、栈溢出等。
自定义异常
entends Exception。
自定义异常需要显式处理。
异常类和其他类一样就有类的特质,可以有属性和方法。
因为间接继承了throwable类,所以有printStackTrace()方法。