Exception 和 Error 有什么区别?

基本概念理解:

问题:

  • 请对比 Exception 和 Error?
  • 运行时异常与一般异常有什么区别?

Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。

Exception 又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。

 

如何处理好异常:

了解哪些 Error、Exception 或者 RuntimeException? 详情

NoClassDefFoundError 和 ClassNotFoundException 有什么区别?
当一个类找不到的时候,JVM有时候会抛出ClassNotFoundException异常,而有时候又会抛出NoClassDefFoundError。

ClassNotFoundExceptionNoClassDefFoundError  
从java.lang.Exception继承,是一个Exception类型从java.lang.Error继承,是一个Error类型 
当动态加载Class的时候找不到类会抛出该异常当编译成功以后执行过程中Class找不到导致抛出该错误
一般在执行Class.forName()、ClassLoader.loadClass()或ClassLoader.findSystemClass()的时候抛出由JVM的运行时系统抛出

 

 

 

 

 

 

掌握最基本的语法是必须的,

try-catch-finally 块   (catch不是必须的)

throw、throws 关键字等

 

异常处理的两个基本原则:

尽量不要捕获类似 Exception 这样的通用异常,而是应该捕获特定异常

不要生吞(swallow)异常

 

异常处理机制带来的额外的开销:

  1. try-catch 代码段会产生额外的性能开销,或者换个角度说,它往往会影响 JVM 对代码进行优化,所以建议仅捕获有必要的代码段,尽量不要一个大的 try 包住整段的代码;与此同时,利用异常控制代码流程,也不是一个好主意,远比我们通常意义上的条件语句(if/else、switch)要低效。
  2. Java 每实例化一个 Exception,都会对当时的栈进行快照,这是一个相对比较重的操作。如果发生的非常频繁,这个开销可就不能被忽略了。

 

 

Java核心技术面试精讲 - 02

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值