Java之异常专项练习【Java面试题】,2024年最新java高级面试题和答案

System.out.println(“执行最终语句”);

}

}

}

运行结果

在这里插入图片描述

没有异常的时候

public class Test {

public static void main(String[] args) {

try {

int a = 0/1;

}catch (Exception e)

{

System.out.println(“捕捉到异常”+e.getMessage());

}finally {

System.out.println(“执行最终语句”);

}

}

}

在这里插入图片描述

● finally和catch可以两个都存在也可以只存在一个,但是try不能单独存在

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

● finalize:

垃圾回收机器(Garbage Collection),也叫GC,垃圾回收器主要有一下特点:

Object 类的一个方法,所有Java对象都有这个方法

当对象不再被程序所使用的时候,垃圾回收器将会将其回收

垃圾回收是在后台运行的,我们无法命令垃圾回收器马上回收资源,但是我们可以告诉他可以尽快回收资源(System.gc()和Runtime.getRuntime().gc())

垃圾回收器在回收某个对象的时候,首先会调用该对象的finalize()方法

GC主要针对堆内存

class Person {

protected void finalize() throws Throwable {

System.out.println(“我被回收了!!!”);

}

}

public class Test {

public static void main(String[] args) {

Person p = new Person();

//一次不会触发垃圾回收,就多赋值null,告诉垃圾回收器这个资源我不要了

for (int i = 0; i < 1000; i++) {

p = null;

}

System.gc();//增加垃圾回收器启动的概率

}

}

运行结果

在这里插入图片描述

二、Java中异常分为哪些种类?


按照异常需要处理的时机分为编译时异常(也叫受控异常)也叫 CheckedException 和运行时异常(也叫非受控异常)也叫 UnCheckedException。

Java认为Checked异常都是可以被处理的异常,所以Java程序必须显式处理Checked异常。

如果程序没有处理Checked 异常,该程序在编译时就会发生错误无法编译。这体现了Java 的设计哲学:没有完善错误处理的代码根本没有机会被执行。对Checked异常处理方法有两种:

● 第一种:当前方法知道如何处理该异常,则用try…catch块来处理该异常。

public class Test {

public static void main(String[] args) {

try {

Class.forName(“com.mysql.jdbc.Driver”);

}catch (Exception e){

e.printStackTrace();

}

}

}

● 第二种:当前方法不知道如何处理,则在定义该方法时声明抛出该异常。

运行时异常只有当代码在运行时才发行的异常,编译的时候不需要try…catch。

Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。

所以由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。

public class Test {

public static void main(String[] args) {

try {

array();

}catch (Exception e){

e.printStackTrace();

}

}

public static void array() throws Exception{

int a[]= {2,3,5,6,7};

System.out.println(a[10]);

}

}

运行结果

在这里插入图片描述

三、error和exception的区别?


Error类和Exception类的父类都是Throwable类,他们的区别如下:

● Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢出等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和预防,遇到这样的错误,建议让程序终止。

● Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。

●Exception类又分为未检查异常(UnCheckedException)和受检查的异常(CheckedException)。运行时异常ArithmeticException,IllegalArgumentException编译能通过,但是一运行就终止了,程序不会处理运行时异常,出现这类异常,程序会终止。而受检查的异常,要么用 try…catch 捕获,要么用throws字句声明抛出,交给它的父类处理,否则编译不会通过。

四、调用下面的方法,得到的返回值是什么?


public int getNum() {

try {

int a = 1 / 0;

return 1;

} catch (Exception e) {

return 2;

} finally {

return 3;

}

}

代码走到第3行的时候遇到了一个MathException,

这时第4行的代码就不会执行了,代码直接跳转到catch语句中,走到第 6 行的时候,

异常机制有一个原则:

如果在catch中遇到了return或者异常等能使该函数终止的话那么有finally就必须先执行完finally代码块里面的代码然后再返回值。

因此代码又跳到第8行,可惜第8行是一个return语句,那么这个时候方法就结束了,因此第6行的返回结果就无法被真正返回。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

针对以上面试题,小编已经把面试题+答案整理好了

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

面试专题

image

除了以上面试题+答案,小编同时还整理了微服务相关的实战文档也可以分享给大家学习

image

image

image

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

[外链图片转存中…(img-WQW74gma-1712942284558)]

除了以上面试题+答案,小编同时还整理了微服务相关的实战文档也可以分享给大家学习

[外链图片转存中…(img-2JmqGu0Q-1712942284558)]

[外链图片转存中…(img-7VrhfrDT-1712942284558)]

[外链图片转存中…(img-xGhnxCBV-1712942284559)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-CoF65Ngz-1712942284559)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值