Java 异常处理

119 阅读1分钟

要点

  1. catch 不能独立于 try 存在。
  2. catch里面不能没有内容
  3. 在 try/catch 后面添加 finally 块并非强制性要求的。(一般用例扫尾,如,Scanner.close())
  4. try 代码后不能既没 catch 块也没 finally 块。
  5. try里面越少越好。
  6. try, catch, finally 块之间不能添加任何代码。
  7. finally里面的代码最终一定会执行(除了JVM退出)
  8. 如果程序可能存在多个异常,需要多个catch进行捕获。(异常的范围大小要逐步扩大)
  9. 异常如果是同级关系,catch谁前谁后没有关系
  10. 如果异常之间存在上下级关系,上级需要放在后面

用例


public class ExceptionTest {
/*
    public void foo() throws ExceptionType1 , ExceptionType2 ,ExceptionTypeN
    {
        //foo内部可以抛出 ExceptionType1 , ExceptionType2 ,ExceptionTypeN 类的异常,或者他们的子类的异常对象。
    }
    */
    public void save(User user)
    {
        if(user  == null)
            throw new IllegalArgumentException("User对象为空");
        //......

    }

    public static void main(String args[])
    {
        try
        //要检查的程序语句
        {
            int a[] = new int[5];
            a[10] = 7;//出现异常
        }
        catch(ArrayIndexOutOfBoundsException ex)
        //异常发生时的处理语句
        {
            System.out.println("超出数组范围!");
        }
        finally
        //这个代码块一定会被执行
        {
            System.out.println("一定会执行的finally");
        }
        System.out.println("异常处理结束!");
    }
}