java异常面试题整理

JAVA下得异常体系

在这里插入图片描述

1、Error是虚拟机内部错误

栈内存溢出错误,StackOverflowError(递归,递归层次太多或递归没结束)
堆内存溢出,OutOfMermoryError(堆创建了很多对象)

2、Exception是程序错误

RuntimeException:也成为logicExcepion
为什么不编译器不会要求try catch处理
本质是逻辑错误,比如空指针异常,这种问题是变成逻辑不严谨造成的,应该通过完善我们的代码变成逻辑,来解决问题

3、非RuntimeException

百年一起会要求我们try catch或者throws处理
本质是客观因素造成的问题,比如FileNotFoundException,

2、常见的5个运行时异常

数组越位(IndexOutOfBoundsException)
控制指针异常(NullPointerException)
类型转换异常(ClassCastException,sql映射)
数据存储异常(ArrayStoreException,将不同类型的数据,存储到数组中)
数据格式化异常(NumberFormateException)
算术异常(ArithmeticException,发生在数字的算术运算时的异常,如一个数字除以 0 就会报这个错)
数据库操作异常(SQLException,发生在操作数据库时的异常。)

3、throw跟throws的区别

throw,用于方法内,主动抛出异常,比方说对传进来的数据进行判断,不符合规格,,就抛出异常
throws,作用与声明方法上,生命该方法可能会派出异常
针对项目中,异常的处理方式,我们一般采用层层往上抛,最终通过异常处理机制统一处理(展示异常页面,或返回统一的json信息),自定义 异常一般继承RunntimeException,我们去看看Hibernate等框架,他们的异常体系都是最终继承自RunntimeException

4、try catch fifinally,try里有return,finally还执行么?

执行,并且finally的执行早于try里面的return
结论:
1.不管有木有出现异常,finally块中代码都会执行;
2.当try和catch中有return时,finally仍然会执行;
3.finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4.finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值