【Java面试题】22 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
throws是获取异常
throw是抛出异常
try是将会发生异常的语句括起来,从而进行异常的处理,
catch是如果有异常就会执行他里面的语句,
而finally不论是否有异常都会进行执行的语句。
throw和throws的详细区别如下:
throw是语句抛出一个异常。
语法:throw (异常对象);
throw e;
throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}
public void doA(int a) throws Exception1,Exception3{......}
1. 区别
throws是用来声明一个方法可能抛出的所有异常信息,而throw则是指抛出的一个具体的异常类型。此外throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。
2.分别介绍
throws:用于声明异常,例如,如果一个方法里面不想有任何的异常处理,则在没有任何代码进行异常处理的时候,必须对这个方法进行声明有可能产生的所有异常(其实就是,不想自己处理,那就交给别人吧,告诉别人我会出现什么异常,报自己的错,让别人处理去吧)。
格式是:方法名(参数)throws 异常类1,异常类2,.....
举例:
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("自定义异常");
}
代码块中可能会产生3个异常,(Exception1,Exception2,Exception3)。
如果产生Exception1异常,则捕获之后再抛出,由该方法的调用者去处理。
如果产生Exception2异常,则该方法自己处理了(即System.out.println("出错了!");)。所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,Exception3 里面的Exception2也就不用写了。
而Exception3异常是该方法的某段逻辑出错,程序员自己做了处理,在该段逻辑错误的情况下抛出异常Exception3,则该方法的调用者也要处理此异常。
throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。
throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。
throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。
throw是具体向外抛异常的动作,所以它是抛出一个异常实例。
throws说明你有那个可能,倾向。
throw的话,那就是你把那个倾向变成真实的了。
同时:
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
最新文章
- python 正则
- jqueryEasyUI:tabs扩展:给tabs组件绑定双击事件 分类: JqueryEasyUI 2014-09-29 14:36 537人阅读 评论(0) 收藏
- 本内容中发现无效字符。处理资源 &#39;file:///C:/Users/XDJ/Desktop/1111/press.xml&#39; 时出错。第 5 行,位置: 11 <;author>;ƽ
- 配置无线网络的时候会提示“Enter Password for Default Keyring to Unlock”
- Painter 12安装教程
- (转)博弈问题与SG函数
- Adobe Edge Animate --使用HTML5实现手机摇一摇功能
- js判断IE6(推荐方法一)
- JNI与JNA性能比较
- Android解析中国天气网的Json数据
- [kuangbin带你飞]专题四 最短路练习 POJ 2253 Frogger
- sphinx实时索引和高亮显示
- Swift 是猴还是猿?
- CSS3_综合案例
- JavaScript基本概念
- UVA215-Spreadsheet Calculator(模拟+拓扑排序)
- 环境变量(1):PATH的修改
- PCA whitening
- Javascript中Json对象与Json字符串互相转换方法汇总(4种转换方式)
- nginx——绑定 Nginx 进程到不同的 CPU 上
热门文章
- Android开发12——Andorid中操作数据库的insert的两种方法以及nullColumnHack
- Windows环境下文件的彻底删除与恢复,推荐几个工具(整理)
- C# 获取指定目录下所有文件信息
- vi-vim :删除、撤销、恢复删除、复制删除
- bnuoj16491
- Android问题-“signaturs do not match the previously installed version”
- js中Math.round、parseInt、Math.floor和Math.ceil小数取整小结【转】
- 基于jQuery带进度条全屏图片轮播代码
- Tomcat Connector三种执行模式(BIO, NIO, APR)的比較和优化
- ubuntu 16.04 上opengl 的安装以及例子程序编译执行