java异常笔记

概念:在程序运行中发生的不正常情况,简称为“异常”。(程序中的语法错误和逻辑错误不是异常)

Throwable的子类:1、Error:java虚拟机无法解决的问题。

            2、Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以通过针对性代码进行处理。编译时异常和运行时异常)

                                                


3、所有的异常类是从 java.lang.Exception 类继承的子类。

解决异常的途经:

一、捕获异常

try
{
   // 可能出现的异常
}catch(ExceptionName e1)
{
   //处理方式
}
finally{//可写可不写,无论是否发生异常,总会执行}

当try块中检测出异常,在catch中进行捕获,从而称他们为保护代码。

public static void main(String args[]){
     try{
        int a[] = new int[2];
        System.out.println("Access element three :" + a[3]);
     }catch(ArrayIndexOutOfBoundsException e){
        System.out.println("Exception thrown  :" + e);
     }
     System.out.println("Out of the block");
  }
结果:Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3

                            Out of the block

二、多重捕获

一个 try 代码块后面跟随多个 catch 代码块的情况就叫多重捕获。

多重捕获块的语法如下所示:

try { // 程序代码 } catch ( 异常类型 1 异常的变量名 1 ) { // 程序代码 } catch ( 异常类型 2 异常的变量名 2 ) { // 程序代码 } catch ( 异常类型 2 异常的变量名 2 ) { // 程序代码 }

上面的代码段包含了 3 个 catch块。

可以在 try 语句后面添加任意数量的 catch 块。

如果保护代码中发生异常,异常被抛给第一个 catch 块。

如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。

如果不匹配,它会被传递给第二个 catch 块。

如此,直到异常被捕获或者通过所有的 catch 块。

若catch异常是包含关系,范围小的写上面。

  • try, catch, finally 块之间不能添加任何代码。

三、解决异常方法二  throws

在一个方法中,可能不知如何处理该异常,可以逐层抛向上抛,直到main中,在向上抛的过程中,可以向上使用try——catch——finally进行处理。

在方法的申明出,显式的抛出对象异常类型。

四、声明自定义异常。



猜你喜欢

转载自blog.csdn.net/herry57/article/details/79598097