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、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

最新文章

  1. python 正则
  2. jqueryEasyUI:tabs扩展:给tabs组件绑定双击事件 分类: JqueryEasyUI 2014-09-29 14:36 537人阅读 评论(0) 收藏
  3. 本内容中发现无效字符。处理资源 'file:///C:/Users/XDJ/Desktop/1111/press.xml' 时出错。第 5 行,位置: 11 <author>ƽ
  4. 配置无线网络的时候会提示“Enter Password for Default Keyring to Unlock”
  5. Painter 12安装教程
  6. (转)博弈问题与SG函数
  7. Adobe Edge Animate --使用HTML5实现手机摇一摇功能
  8. js判断IE6(推荐方法一)
  9. JNI与JNA性能比较
  10. Android解析中国天气网的Json数据
  11. [kuangbin带你飞]专题四 最短路练习 POJ 2253 Frogger
  12. sphinx实时索引和高亮显示
  13. Swift 是猴还是猿?
  14. CSS3_综合案例
  15. JavaScript基本概念
  16. UVA215-Spreadsheet Calculator(模拟+拓扑排序)
  17. 环境变量(1):PATH的修改
  18. PCA whitening
  19. Javascript中Json对象与Json字符串互相转换方法汇总(4种转换方式)
  20. nginx——绑定 Nginx 进程到不同的 CPU 上

热门文章

  1. Android开发12——Andorid中操作数据库的insert的两种方法以及nullColumnHack
  2. Windows环境下文件的彻底删除与恢复,推荐几个工具(整理)
  3. C# 获取指定目录下所有文件信息
  4. vi-vim :删除、撤销、恢复删除、复制删除
  5. bnuoj16491
  6. Android问题-“signaturs do not match the previously installed version”
  7. js中Math.round、parseInt、Math.floor和Math.ceil小数取整小结【转】
  8. 基于jQuery带进度条全屏图片轮播代码
  9. Tomcat Connector三种执行模式(BIO, NIO, APR)的比較和优化
  10. ubuntu 16.04 上opengl 的安装以及例子程序编译执行