java学习随想--java的异常处理,
java学习随想--java的异常处理,
概述
Java的异常处理机制使java程序更加健壮,不会因为一些异常的发生而使虚拟机退出。
Java异常处理机制能够在程序发生异常的时候,能够启动相应的程序对异常进行处理,使异常消除,让程序恢复正常状态,让程序能够继续下去,就算无法处理异常也要显示一些提示信息,以方便测试检验。
异常的父类
Java把异常当成对象来处理。
Throwable是所有异常类的超类,他有两个直接子类,Error和Exception。
异常的分类
Error是仅靠程序无法恢复的严重错误,比如虚拟机和系统错误,应用程序不应该对其进行捕捉。而Exception是应该被捕捉进行处理的异常。
异常处理方式
异常的处理有两种方式:
1、
try{}catch(XXXException e1){}catch(XXXException e2){}catch(XXXException e3){}.....
在try{}语句块中填写可能会出现异常的语句。
catch()里面的Exception类型应该按照子类到父类的顺序来排列。
在catch(){}中填写相应的处理程序。
2、
在方法声明时声明抛出这类异常,希望调用方可以对他进行处理,关键字throws后面跟上要抛出的异常类型,可以抛出多种异常,用逗号隔开。
异常抛出方式
在编写复杂的功能代码时,经常会发生一系列的方法调用,从而形成"方法调用栈",异常的传播规则相反:只要异常没有呗完全捕捉,异常从发生异常的方法逐渐向外传播,首先传给方法的调用者。
方法抛出异常时,方法会从栈上立即被取出,而异常会再度丢给栈上的方法,也就是调用方,如果调用方也将该异常抛出而不是try{}catch{}住,此时异常会再度抛给栈上的方法,如此一路下去直至扑捉住,如果连main方法将异常抛出不做处理,那么只好有jvm处理。也就是说异常会向上传递至调用方,,如果不捕捉而是抛出会一直传递下去,直至main,main也没有try{}catch{}就抛给jvm。
Exception分类
Exception类可以分为两种:
1、运行时异常
RuntimeException类及其子类都被称为运行时异常,这种异常的特点是Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过。例如,当除数为零时,就会抛出java.lang.ArithmeticException异常。
2、受检查异常
除了RuntimeException 及其子类之外,其他的Exception类及其子类都属于受检查异常,这种异常的特点是要么用try...catch捕获处理,要么用throws语句声明抛出,否则编译不会通过。
运行时异常表示无法让程序恢复运行的异常,通常是执行了错误的操作,一旦出现这种异常,程序应该终止。
自定义异常
java异常的设计者无法考虑到所有的异常类型,java程序员可以自己扩展异常类。例如扩展Exception,
public class MyException extends Exception {
MyException() {}
MyException(String message) {
super(message);
}
}
此时就可以使用自定义的MyException了。在适当时候抛出MyException,使用throw关键字抛出MyException对象。但是方法在用throw抛出自定义的Exception类型时,应该在方法声明处声明抛出MyException,否则编译出错。例如
Public class test {
public void go() throws MyException {
throw new MyException();
}
}
相关文章
- 暂无相关文章
用户点评