java 异常

183 阅读2分钟

在Java语言中,我们用异常对象来表示不同的异常。

所谓Java异常对象就是一个存放着相关错误信息的对象,如果方法运行时产生了异常,该方法就可以抛出一个异常对象

为了表示不同种类的异常,Java语言中定义了许多异常类。

什么是异常 有异于常态,和正常情况不一样,有错误出现,阻止当前方法或作用域,称之为异常。

非检察异常:

1.空指针异常(NullPointerException)

2.数组下标越界异常ArrayIndexOutOfBoundsException

3.类型转换异常(ClassCastException)

4.算术异常(ArithmeticExcetion)

在Java语言中,任何的异常对象都是Throwable类的直接子类或间接子类的实例。Java的类库已经提供了一些常见的异常类,如果这些异常类不能够满足要求,用户也可以创建自己的异常类。


**常见的而异常类**
  • ArithmeticException
  • ArrayIndexOutOfBandsException
  • IOException
  • FileNotFoundException
  • NullPointerException
  • NumberFormatException

Error类表示Java运行时产生的系统内部错误或资源耗尽等严重错误。 这种错误通常是程序无法控制和解决的,如果发生这种错误,通常的做法是通知用户并中止程序的执行。

常见的错误类

  • NoClassDefFoundError
  • OutOfMemoryError
  • VirtualMachineError

异常抛出格式1

<访问权限修饰符> <返回值类型> <方法名>(参数列表) throws 异常列表

   public             void                  troubleSome()               throws IOException

异常抛出格式2

try{

		抛出异常的代码
}catch (某Exception类型 e){
		处理该异常类型的代码
}catch (某Exception类型 e){
		处理该异常类型的代码
}finally{错误也执行的代码

}

异常处理练习一

代码1:

try{

        System.out.println("请输入整数");
        Scanner scanner = new Scanner(System.in);
        int age = scanner.nextInt();
        System.out.println("十年后你"+(age + 10) + "岁");

    }catch (Exception e){
        System.out.println("你应该输入整数");
    }
    System.out.println("程序结束啦");
    
    


多类型处理:

try{

        System.out.println("请输入整数");
        Scanner scanner = new Scanner(System.in);
        int age = scanner.nextInt();
        System.out.println("十年后你"+(age + 10) + "岁");

    }catch (InputMismatchException e){
        System.out.println("你应该输入整数");
    }catch (ArithmeticException e){
        System.out.println("除数不能为0");
    }
    System.out.println("程序结束啦");

异常来顺序是 先子类后父类(必须这样子)

finally

当一个方法的某条语句抛出异常后,该方法剩余的语句将无法继续执行。这种情况下,方法往往无法将其占用的资源进行释放。 解决方法: 在每个catch子句的异常处理代码中也加上资源释放的代码,但这种方法非常麻烦; Java语言的异常处理机制中提供了一个更好的方案-程序员可以使用finally子句来统一进行资源释放之类的工作。

代码如下; try{

        System.out.println("请输入整数");
        Scanner scanner = new Scanner(System.in);
        int age = scanner.nextInt();
        System.out.println("十年后你"+(age + 10) + "岁");
    }catch (InputMismatchException e){
        System.out.println("你应该输入整数");
    }
    **finally** {
        System.out.println("*********** 我就要执行 *********");
    }
    System.out.println("程序结束啦");