Java:异常体系结构

1、Java异常

指程序运行时(非编译时)所发生的非正常情况或错误,JVM会将出现的错误表示为一个异常并抛出。

2、异常机制功能

  • What:异常回答了什么被抛出
  • Where:异常堆栈跟踪回答了在哪抛出
  • Why:异常信息回答了为什么被抛出

3、Java异常体系

  • Throwable:异常基类,java.lang.Throwable,派生Error(错误)和Exception(异常)两个子类。
    • Error:表示程序运行期间出现非常严重的错误,且该错误不可恢复,由于是运行在JVM的错误,会导致程序终止。(JVM责任)
    • Exception:程序运行本身异常,编译器可捕获。派生出RuntimeException(运行时异常)和CkeckedException(检查异常)
      • RuntimeException:运行异常,编译器没有强制对其捕获处理,当出现这种异常,由JVM来处理。(程序责任)
        • 多线程由Thread.run()抛出,异常的线程退出;
        • 单线程由main()方法抛出,整个程序退出;
        • NullPointerException ---- 空指针异常
        • ClassCastException ---- 类转换异常
        • ArrayIndexOutOfBoundsException ---- 数组越界异常
        • ArrayStoreException ---- 数组存储异常
        • BufferOverflowException ---- 缓冲区溢出异常
        • ArithmeticException ---- 算术异常
      • CheckException:编译期可以检测的异常,如IOException,SQLException,java编译器强制去捕获此类型异常。(Java编译器) 非RuntimeException异常
        • ClassNotFoundException:找不到指定class的异常;
        • IOException:IO操作异常
import java.io.FileNotFoundException;

public class ErrorAndException {
    private void throwError() {
        throw new StackOverflowError();
    }
    private void throwRuntimeException() {
        throw new RuntimeException();
    }
    private void throwCheckedException() {
        throw new FileNotFoundException();//编译器报错
    }
}

4、常见Error异常

  • NoClassDefFoundError:找不到class定义的异常
    • 类依赖的class或者jar不存在
    • 类文件存在,但是存在不同的域中
    • 大小写问题,javac编译的时候是无视大小写
  • StackOverflowError:深递归导致栈被耗尽而抛出的异常
  • OutOfMemoryError:内存溢出异常

5、Error&Exception区别

  • Error:程序无法处理的系统错误,编译器不做检查
  • Exception:程序可以处理的异常,捕获后可恢复

总结:前者是无法处理的错误,后者是可以处理的异常。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值