Java异常

来源:互联网 发布:厦门老年大学网络报名 编辑:程序博客网 时间:2024/06/07 01:45

在程序运行过程中,如果JVM检测出一个不可执行的操作,就会出现运行时错误(running error).运行时错误会被作为异常抛出.异常就是一种对象,表示阻止正常进行程序执行的错误或者情况.如果异常没有被处理,那么程序就会非正常终止.

优势
使方法抛出一个异常给调用者,并由调用者处理该异常
将检测错误(由被调用的方法完成)从处理错误(由调用方法完成)中分离

异常类
系统错误,异常和运行时异常

  1. 系统错误
    JVM抛出
    内部系统错误
    • LinkageError
    • VirtualMachineError
  2. 异常
    由程序和外部环境引起的错误,这些错误能被捕获和处理

    • ClassNotFoundException
    • IOException
  3. 运行时异常
    程序设计错误

    • 类型转换
    • 数组越界

免检异常
反应程序设计上不可恢复的逻辑错误
可能出现在任何地方
不强制要求编写代码捕获或声明

  • RuntimeException

必检异常
编译器会强制程序员检查并通过try-catch块处理,或者在方法头进行声明

声明异常,抛出异常,捕获异常
声明异常
每个方法都必须声明它可能抛出的必检异常的类型
抛出异常
检测到错误的程序可以创建一个合适的异常类型的实例并抛出它

缺点
异常处理通常需要更多的时间和资源
异常处理需要初始化新的异常对象,需要从调用栈返回,而且还需要沿着方法调用链来传播异常以便能找到它的异常处理器,

一些问题

int 1/0 java.lang.ArithmeticException: / by zero
double 1/0 Infinity
java.util.InputMismatchException
当控制台输入的类型错误时,可以用nextLine()丢弃当前行.

当产生一个异常时,JVM会做什么?

0 0