程序中总是存在着各种问题,为了使在程序执行过程中能正常运行,使用Java提供的异常处理机制捕获可能发生的异常,对异常进行处理并使程序能正常运行。这就是Java的异常处理。
<强>一、可捕获的异常强>
Java中可以捕获的异常分为可控式和运行时异常。
1只可控式异常
在Java中把那些可以预知的错误,在程序编译时就能对程序中可能存在的错误进行处理,并给出具体的错误信息,这些错误称为可控式异常。常用的可控式异常如下:
异常说明IOException当发生某种I/O异常时,抛出此异常SQLException提供关于数据库访问错误或其他错误信息的异常ClassNotFoundException类没有找到异常NoSuchFieldException类不包含指定名称的字段时产生的信号NoSuchMethodException无法找到某一特定方法时,抛出该异常
2只运行时异常
在Java中不能被编译器检测到的错误称为运行时异常。常用的运行时异常如下:
,异常,说明,IndexOutOfBoundsException,指示某集合或数组的索引值超出范围时抛出该异常,NullPointerException,当应用程序试图在需要对象的地方使用null时,抛出该异常,ArithmeticException,当出现异常的运算条件时,抛出此异常,IllegalArgumentException,抛出异常的表明向方法传递了一个不合法或不正确的的参数,ClassCastException异常,当试图将对象强制转换为不是实例的子类时,抛出该异常
<强>二,处理异常强>
在Java中当程序出现异常时,可以使用试···,try···catch···最后或尝试···最后进行处理。
1只使用试···抓处理异常
试后是正常执行的语句,而抓住后是对异常处理的语句,抓住的括号中是程序需要处理的异常类型。语法格式如下:
<>之前 尝试{ 正常执行的语句 }捕捉(异常e) { 对异常进行处理的语句 }这里举一个算数异常的例子,如下。
<>之前 公开课ExceptionTest { 公共静态void main (String [] args) { int结果=1/0; 尝试{ System.out.println(结果); }捕捉(异常e) { system . out。println(“抛出异常:“+ e.getMessage ()); } } }这里是1/0个异常的算法,因为除数不能为0。运行结果如下:
因为有异常,所以不执行尝试后的语句,从而执行捕获后的语句。其中“e.getMessage()”是获取异常信息的方法,用于获取详细消息字符串;此外还有printStackTrace()方法,用于将其栈踪迹输出至标准错误流;toString()方法用于获得简短描述。
2只使用试···抓住···最后处理异常
这里试,捕获后的语句与前面的相同,而最终后的语句无论是否发生异常都要执行,因此最后语句块通常用于执行垃圾回收。语法格式如下:
<>之前 尝试{ 正常执行的语句 }捕捉(异常e) { 对异常进行处理的语句 最后}{ 一定会被处理的语句 }3只使用试···最后处理异常
在程序发生异常时,就可以在最后语句块中对其进行相应的处理,另外当程序没有发生异常时,执行完试和最后之间的语句后,也将执行最后语句块中的代码。语法格式如下:
<>之前 尝试{ 需要执行的语句 最后}{ 一定会被处理的语句 }<强>三,抛出异常强>
对于程序中发生的异常,除了上面的···查明语句处理之外,还可以使用抛出声明或抛出语句抛出异常。
1只使用抛出声明抛出异常
扔用于方法声明,在声明方法时使用抛出声明抛出异常,然后在调用该方法中对异常进行处理。
如需声明多个异常,各异常间要用逗号分隔,语法格式如下:
<>之前 数据类型方法名(形参列表)抛出异常类1、异常类2,……,异常类n { 方法体; }比如用抛扔出异常异常。
<>之前 公共空间showInfo()抛出异常{//抛出例外 FileInputStream=新FileInputStream (“C://Record.txt”);//创建IO对象 }2只使用扔语句抛出异常
如果希望程序自行抛出异常,可以使用扔语句来实现。语法格式如下:,抛出新的异常(“对异常的说明”);,