java 异常必须知道的基础东西(转)

1、什么是异常?描述下异常处理流程?
异常;程序在执行过程中发生的不正常的情况,是描述出错信息的对象,通过异常处理机制可以增加程序的健壮性和可靠性。异常的处理流程;先执行try中的代码,没有异常执行完try后,继续执行try catch后面的代码,有异常发生,那么终止try后面的代码,转而执行catch中的代码,然后执行try catch后面的代码。


2、异常框架的类结构?
首先一个父类Throwable 是所有异常情况的父类,Throwable中有两个子类,一个是Error错误,可捕获不可处理,就像电脑蓝屏。另一个子类是Exccption是异常,可以捕获也可以处理,Exccption下面有很多异常的子类


3、checked异常与unchecked异常的区别是什么?
编译期异常在编译时发生,必须捕获,否则无法通过编译
运行期异常在运行时发生,可捕获也可以不捕获

4、 Error和Exception的区别是什么?

Error是错误,可捕获,但是不可以处理,就像电脑蓝屏
Exception是异常,可以捕获也可以处理,就像电脑中了病毒后可以查杀病毒。

5、异常捕获的流程?如果有异常发生是怎样的流程?
先执行try中的代码,没有异常执行完try后,继续执行try catch后面的代码,有异常发生,那么终止try后面的代码,转而执行catch中的代码,然后执行try catch后面的代码。



6、如果try块中有多种异常,在catch块中如何处理?
如果在try中有多种异常,那么终止try块中的代码,转而执行catch块中的代码,异常发生时会找到catch块中的第一个合适的异常,后面的全部忽略。

7、如果要抛出异常怎么做?
throw new java.lang.NauIpointerExceptin();
}抛出异常


8、throw和throws的区别

throw是语句,表示通过代码方式抛出一个异常
throws是方法的修饰符,表示方法不处理异常,异常由调用方来处理

9、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行,什么时候被执行?
会,如果在指向中有return跳出方法,那么finally同样执行,在跳出方法欠执行


10、finally的作用是什么?一般在什么时候使用?
无论是否有异常都会执行,一般用于系统资源回收

11、finally是不是什么时候都会执行?
不是,在虚拟机关闭时不会执行,system。exit(0);

12、Try块中是否所有的语句都一定会执行,为什么?
不会,当try中出现异常时,try中出现异常语句后面的语句将不会执行,转而去执行catch中的语句。

13、怎么样判断一个异常类是checked异常还是unchecked异常?

运行期异常有一个共同的父类RuntimeException,如果是RuntimeException的子类,那么就是运行期异常,如果不是就是编译期异常。

 

14.子类override父类的某个方法时,throws声明的异常只能小于等于父类方法,若出现了新异常,则不可throws来声明抛出异常,而是可以在方法中通过try catch来捕获并处理。

 

15,子类构造函数throws异常大于等于父类构造函数。

 

16,检查性异常------程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。JAVA编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。

运行期异常------这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,JAVA编译器不强制要求处理这类异常。

错误------一般很少见,也很难通过程序解决。它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而有运行环境处理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值