我们 在java程序运行的过程中,会发生各种非正常状况。所以我们在java语言中,引入了异常,以异常类的形式对这些非正常情况进行封装,通过异常处理机制对程序运行时发生的=各种问题进行处理。
下图是Java中的异常体系:
如上图可以看出,Throwable有两个直接的子类Error和Exception,其中Error代表程序中产生的错误,Exception代表程序中产生的异常。
Error类成为错误类,我们在程序编译是编译器会报错。Exception称为异常类,在我们编译的时候往往不会报错但是运行时会出错。
由于发生异常,程序立即终止,无法继续向下执行。为了解决这个问题JAVA中提供了一种对异常进行处理的方式——异常捕获。异常捕获通常使用try....catch语句,具体语法如下:
try{
//程序代码块
}catch(ExceptionType(Excetion类及子类)e){
//对ExceptionType的处理
}
其中在try代码块中编写可能发生异常的java语句,catch代码块中编写针对异常处理的代码。当try代码块中的程序发生了异常,系统会将这个异常的信息封装成一个异常对象,并将这个对象传递给catch代码块。catch代码块需要一参数指明它所能接受的异常类型,这个参数必须是Exception类或者其子类。
有时候我们希望有些语句无论程序是否发生异常都要执行,这时就可以在try...catch语句后,加一个fianlly代码块。
throws关键字
Java中允许在方法的后面使用throws关键字对外声明该方法有可能发生的异常。
throws关键字声明抛出异常的语法格式如下:
修饰符 返回值类型 方法名([参数1,参数2,...])throws ExceptionType1[,ExceptionType2...]{
}