Java异常

Error Exception 区别是什么?
前一篇有,不再说明。
运行时异常和一般异常(受检异常)区别是什么?

答:异常体系中throwable类主要有两大类:error和exception,其中exception类分为两大类:RuntimeException和CheckedException。这两种异常都是在代码执行期间发生的,主要区别在于编译器如何在编译期间对待:要求提前处理受检异常,但对于运行时异常则不会。

受检异常:这些异常在编译时就会被检查,意味着代码中出现了可能抛出受检异常的方法时,编译器会要求你必须处理,例如用try--catch或用throws关键字声明。例如试图打开一个不存在的文件。

运行时异常:编译时不会被检查,就算代码可能出现异常也不会强迫你检查,通常表示代码中的缺陷,例如数组越界等。

JVM是如何处理异常的?

答:在一个方法中如果发生异常,这个方法会创建一个异常对象,这个异常对象中会包含异常名称、异常描述以及异常时的状态。创建异常对象并转交给JVM的过程称为抛出异常。可能有一系列的方法调用最后才进入抛出异常的方法,这一系列方法调用的有序列表叫做调用栈。

JVM会顺着调用栈查看是否有可以处理异常的代码,如果有,调用它处理。如果JVM发现有可以出现异常的代码时,会把异常发给它,如果没有找到可以处理异常的代码块,JVM会将异常转交给默认异常处理器,会打印出信息并终止程序。

throw throws 的区别是什么?
1、throw用于显示抛出异常,throws用于声明方法可能会抛出的异常
2、throw后面只能接一个异常对象,throws后面可以接多个异常类
3、throw在方法体内使用,throws在方法签名中使用
finalfinallyfinalize 有什么区别?
答:final是修饰符,可以修饰变量、方法、代码块;finally用于try-catch语句;finalize是一个方法,用于对象清理操作,例如释放资源。
NoClassDefFoundError ClassNotFoundException 区别?
答:按error和exception的区别来回答。
try-catch-finally 中哪个部分可以省略?
答:catch
try-catch-finally 中,如果 catch return 了, finally 还会执行吗?
答:会,会在return之前执行finally。如果 catch 块中有 return 语句,并且 finally 块中也有 return 语句,那么 catch 块中的 return 会被 finally 块中的 return 语句覆盖。也就是说,方法会返回 finally 块中的返回值 ,所以最好不要在catch中return。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值