Java异常-面试题

10 篇文章 0 订阅

异常处理机制主要回答了三个问题

What:异常类型回答了什么被跑出

Where:异常堆栈跟踪回答了在哪抛出

Why:异常信息回答了为什么被抛出

Error和Exception的区别

Error:程序无法处理的系统错误,编译器不做检查

Exception:程序可以处理的异常,捕获后可能恢复

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

Java的异常体系

RuntimeException:不可预知的,程序应该自行避免

非RuntimeException:可预知的,从编译器检验的异常

从责任角度看:

  1. Error属于JVM需要承担的责任
  2. RuntimeException:是程序应该承担的责任
  3. Checked Exception:可检查异常,是Java编译器应该负担的责任

常见Error及Exception

  1. NullPointerException-空指针引用异常
  2. ClassCastException-类型强制转换异常
  3. IllegalArgumentException-传递非法参数异常
  4. IndexOutOfBoundsException-下标越界异常
  5. NumberFormatException-数字格式异常

Error

  1. NoClassDefFoundError-找不到class定义的异常
  2. StackOverflowError-深度递归导致栈被耗尽而抛出的异常
  3. OutOfMemoryError-内存溢出异常

NoClassDefFoundError的成因:

  1. 类依赖的class或jar不存在
  2. 类文件存在,但在不同的域中
  3. 大小写问题,Javac编译的时候无视大小写,很有可能编译出来的class文件与想要的不一致

Java的异常处理机制

抛出异常:创建异常对象,交由运行时系统处理

捕获异常:寻找合适的异常处理器处理异常,否则终止运行

Try-catch的性能

Java异常消耗性能的地方

  1. try-catch块影响jvm的优化
  2. 异常对象实例需要保存栈快照等信息,开销较大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值