有关异常的常见面试题
来源:互联网 发布:手机怎么激活淘宝店铺 编辑:程序博客网 时间:2024/05/16 12:11
一、java中的两种异常:受检查异常和不受检查异常
不受检查异常又叫做运行时异常,这些异常都是runtimeException的子类,如NullPointerException空指针异常、IndexOutOfBoundsException下标越界异常。这一类异常是在程序运行时可能发生的,不要求一定要捕获该异常,一般是因为错误的程序逻辑引起的,想要解决此类异常需要仔细排查程序。
受检查异常指的时除去不受检查异常以外的所有异常,由Exception和其子类组成,包括IOException和SQLException等,这一类异常必须要显示的try catch捕获或抛出throws,否则程序不能编译通过。
二、Exception和Error的关系:两者的父类都是throwable
区别是:error出现的原因一般都与java虚拟机有关,如系统崩溃、内存泄漏等,出现这种情况会导致程序中断,且不能依靠程序本身来预防和解决,一般建议程序结束,不建议程序捕获。
Exception表示程序可以处理的异常,这些异常可以捕获且有可能被处理,当出现异常时,建议在程序中捕获处理,不应该随意终止异常。
三、throw和throws的区别:
throws E1,E2,E3只是告诉程序这个方法可能会抛出这些异常,方法的调用者可能要处理这些异常,而这些异常E1,E2,E3可能是该函数体产生的。
throw则是明确了这个地方要抛出这个异常。
如: void doA(int a) throws Exception1,Exception3{
try{
......
}catch(Exception1 e){
throw e;
}catch(Exception2 e){
System.out.println("出错了!");
}
if(a!=b)
throw new Exception3("自定义异常");
}
如果产生Exception1异常,则捕获之后再抛出,由该方法的调用者去处理。
如果产生Exception2异常,则该方法自己处理了(即System.out.println("出错了!");)。所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,Exception3 里面的Exception2也就不用写了。
而Exception3异常是该方法的某段逻辑出错,程序员自己做了处理,在该段逻辑错误的情况下抛出异常Exception3,则该方法的调用者也要处理此异常。
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
4、throw一个必须在函数后面throws声明一下;反过来则大可不必
异常处理完后,Exception对象会在下一个垃圾回收周期被回收掉
- 有关异常的常见面试题
- 链表有关的常见面试题
- 链表有关的常见面试题
- 链表有关的常见面试题
- 有关链表的一些常见面试题
- 常见的面试题
- 常见的面试题
- 常见的面试题
- 常见的面试题
- 有关线程的面试题
- 有关GC的面试题
- 有关数组的面试题
- 有关Tomcat的面试题
- 有关HashMap的面试题
- 常见的字符串面试题
- 常见的数据结构面试题
- 常见的测试面试题
- 常见的C#面试题
- L1正则化和L2正则化的解释
- 宏晶微转换芯片MS1830:analog RGB转CVBS/S-Video,VGA转CVBS/S-Video
- hdu 3853LOOPS (概率DP)
- string与wstring转换
- net 腾讯地图 百度地图逆地址解析
- 有关异常的常见面试题
- 产品之—前后端产品差异对比分析
- 神经网络中的相似度测量
- 第36节 创建定时任务
- java提取一个字符串中的整数和小数部分
- 丢失msvcr120_clr0400.dll解决办法
- C#观察者模式
- CentOS6安装eclipse
- 喷水装置(一)