摘录自:http://blog.csdn.net/ronawilliam/article/details/3299676

void doA() throws Exception1, Exception3 {
  try {
  ……
  } catch(Exception1 e) {
  throw e;
  } catch(Exception2 e) {
  System.out.println("出错了");
  }
  if (a != b)
  throw new Exception3("自定义异常");
}

代码块……中可能产生异常Exception1、Exception2和Exception3。
如果产生Exception1异常,则捕捉了之后抛出由该方法的调用者去做处理;
如果产生Exception2异常,则该方法自己做了处理(打印出了说出错了),所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,,Excpetion3里面的Exception2也就不用写了;
而Exception3异常是该方法的某段逻辑出错,程序员自己作了处理在该段逻辑错误的情况下抛出异常Exception3,则调用者也需要处理。

throw语句用在方法体内,表示抛出异常,由方法体内的语句处理 
throws语句用在方法声明后面,表示再抛出异常,由调用这个方法的上一级方法中的语句来处理

throws主要是声明这个方法会抛出这种类型的异常,使其他地方调用它时知道要捕获这个异常。
throw是具体向外抛异常的动作,所以它是抛出一个异常实例。

throws说明你有哪个可能,倾向 
throw的话,那就是你把那个倾向变成真实的了
同时:
1)throws出现在方法函数头;而throw出现在函数体; 
2)throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常; 
3)两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理

最新文章

  1. 探秘Tomcat——一个简易的Servlet容器
  2. web应用 http 响应 url uri
  3. 调试一个socket通信bug的心理过程和反思
  4. SQL Server取datetime的日期部分
  5. 轻松自动化---selenium-webdriver(python) (九)
  6. Activity与Fragment的生命周期
  7. Android EditText 不弹出输入法
  8. SQL Server 2008 无法保存表的更改
  9. Kettle中通过触发器方式实现数据 增量更新
  10. 【转】VPN服务器配置详解
  11. Objective-c 类接口 (@interface) (类定义)
  12. ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则
  13. 干货满满,腾讯云+社区技术沙龙 Kafka Meetup 深圳站圆满结束
  14. 用R语言进行文本挖掘和主题建模
  15. vue+weui+FormData+XMLHttpRequest 实现图片上传功能
  16. javascipt继承机制(from阮一峰)
  17. WMI tester
  18. livereload使用方法
  19. MySQL分页查询大数据量优化方法
  20. [.net 多线程] Interlocked实现CAS操作

热门文章

  1. maven项目搜索依赖jar包顺序
  2. Eclipse中Tomcat Server启动后马上又自动停止报错Address已经使用8005端口 Can't assign requested address (Bind failed)
  3. Centos 安装 erlang 环境
  4. JAVA—IO操作
  5. char、varchar、nchar、nvarchar、text的区别
  6. layui json数据格式要求
  7. 字节码执行方式--解释执行和JIT
  8. JAVA 中的 StringBuilder 和 StringBuffer 适用的场景是什么?
  9. MySQL之FOUND_ROWS()的用法
  10. python-----读写操作