● finally:异常处理语句结构的一部分,表示总是执行。
● finalize:Object 类的一个方法,所以Java对象都有这个方法,当某Java对象没有更多的引用指向的时候,会被垃圾回收器回收,该对象被回收之前,由垃圾回收器来负责调用此方法,通常在该方法中进行回收前的准备工作。
该方法更像是一个对象生命周期的临终方法,当该方法被系统调用则代表该对象即将“死亡”,但是需要注意的是,我们主动行为上去调用该方法并不会导致该对象“死亡”,这是一个被动的方法(其实就是回调方法),不需要我们调用。
按照异常需要处理的时机分为编译时异常(也叫受控异常)也叫 CheckedException 和运行时异常(也叫非受控异常)也叫 UnCheckedException。Java认为Checked异常都是可以被处理的异常,所以Java程序必须显式处理Checked异常。如果程序没有处理Checked 异常,该程序在编译时就会发生错误无法编译。这体现了Java 的设计哲学:没有完善错误处理的代码根本没有机会被执行。对Checked异常处理方法有两种:
(1) 编译时异常
● 第一种:当前方法知道如何处理该异常,则用try…catch块来处理该异常。(编译时异常)
public class Test {
public void test () {
try {
Class.forName(“”);
}catch (Exception e ){
}
}
}
● 第二种:当前方法不知道如何处理,则在定义该方法时声明抛出该异常。(编译时异常)
public class Test {
public void test () throws ClassNotFoundException {
Class.forName(“”);
}
}
(2) 运行时异常
运行时异常只有当代码在运行时才发行的异常,编译的时候不需要try…catch。
Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,
若显示申明或者捕获将会对程序的可读性和运行效率影响很大。
所以由系统自动检测并将它们交给缺省的异常处理程序。
当然如果你有处理要求也可以显示捕获它们。
public class Test {
public static void main(String[] args) {
int a[] = {1,2,6,8,5};
System.out.println(a[10]);
}
}
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;
-
}
10.}
代码走到第3行的时候遇到了一个MathException,这时第4行的代码就不会执行了,
代码直接跳转到catch语句中,
走到第 6 行的时候,异常机制有一个原则:
如果在catch中遇到了return或者异常等能使该函数终止的话那么有finally就必须先执行完finally代码块里面的代码然后再返回值。
因此代码又跳到第8行,可惜第8行是一个return语句,那么这个时候方法就结束了,
因此第6行的返回结果就无法被真正返回。
如果finally仅仅是处理了一个释放资源的操作,那么该道题最终返回的结果就是2。
因此上面返回值是3。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
最后
毕竟工作也这么久了 ,除了途虎一轮,也七七八八面试了不少大厂,像阿里、饿了么、美团、滴滴这些面试过程就不一一写在这篇文章上了。我会整理一份详细的面试过程及大家想知道的一些问题细节
美团面试经验
字节面试经验
菜鸟面试经验
蚂蚁金服面试经验
唯品会面试经验
因篇幅有限,图文无法详细发出
O0eRfa-1712086785980)]
字节面试经验
[外链图片转存中…(img-ok6LGGwq-1712086785981)]
菜鸟面试经验
[外链图片转存中…(img-NyG8HMpE-1712086785981)]
蚂蚁金服面试经验
[外链图片转存中…(img-dD2h2XDx-1712086785982)]
唯品会面试经验
[外链图片转存中…(img-T8u7yfpl-1712086785982)]
因篇幅有限,图文无法详细发出