Connor学Java - Day08

在这里插入图片描述

Learn && Live

虚度年华浮萍于世,勤学善思至死不渝

前言

Hey,欢迎阅读Connor学Java系列,这个系列记录了我的Java基础知识学习、复盘过程,欢迎各位大佬阅读斧正!原创不易,转载请注明出处:http://t.csdn.cn/ve3t6,话不多说我们马上开始!

1.介绍一下finally?

异常处理语句结构的一部分

(1)无论try-catch中是否捕获到异常,finally中的代码一定会被执行

(2)当try-catch中出现return时,会先执行完finally中的代码后再return

(3)下面情况finally不会被执行:①程序在进入try块之前就出现异常;②在finally块中出现异常;③在前面的代码中使用System.exit()退出程序;④程序所在的线程死亡;⑤关闭CPU

2.try-catch-finally中哪个部分可以省略?

catch可以省略。catch用来捕获、处理受检异常,因此当对可能出现受检异常的语句需要使用try-catch来捕获、处理,否则编译不通过;但当语句可能出现的异常为运行时异常时,无法在编译期使用catch捕获,因此在此情况下可以省略catch

3.Java异常类的划分?

在这里插入图片描述
Error:这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况

Exception:分为受检异常和运行时异常

(1)受检异常:必须在编译期进行捕获和处理,try-catch或throws

(2)运行时异常:程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

4.throw和throws的区别?

(1)throw:在方法体内部,表示抛出某一异常类的实例,由方法体内部的语句处理,表示向外抛异常的动作

(2)throws:在方法声明后,表示该方法内可能会抛出异常,而方法本身没有处理,需要调用者做进一步处理,表示处理异常的动作

5.主线程可以捕获到子线程的异常吗?

线程设计的理念:线程的问题应该线程自己来解决,而不要委托到外部

正常情况下,在主线程中是不能够捕获到子线程中的异常的。如果想实现这一操作,可以调用Thread的静态方法

Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandle());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ConnorYan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值