uncheckException的处理

class User{
      private int age;
      public void setAge(int age){
           if(age < 0){
                 //生成异常对象
                 RuntimeException e = new RuntimeException("年龄不能为负数");
                 throw e; //终止运行,抛出异常对象
           }
           this.age = age;
      }
}
class Test{
      public static void main(String args[]){
           User u = new User();
           u.setAge(-20);
      }
}

 

JVM不能识别的异常,比如年龄为负数,在语法上没有错误但不符合实际,需要靠人为识别异常,生成异常对象,通过throw抛出异常。JVM得到异常对象后则终止代码运行。

checkException的处理

class User{
      private int age;
      public void setAge(int age){
           if(age < 0){
                 Exception e = new Exception("年龄不能为负数");
                 throw e;
           }
           this.age = age;
      }
}

  

捕获:使用try…catch…finally

声明:使用throws

当setAge方法有可能产生checkException时,如Exception类型的异常,在函数后面添加throws声明Exception这样的异常对象,产生异常后由调用setAge方法的地方来处理。

class User{
      private int age;
      public void setAge(int age) throws Exception{
           if(age < 0){
                 Exception e = new Exception("年龄不能为负数");
                 throw e;
           }
           this.age = age;
      }
}

再次编译Test.java时提示如下错误:

class Test{
	public static void main(String args[]){
		User u = new User();
		try{
			u.setAge(-20);
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
}

当在User类中的setAge方法后通过throws声明异常类型后,Test主函数中调用了setAge方法产生了异常并用try…catch进行处理。

总结:

Throw的作用:JVM无法判断的异常,可通过生成异常对象用thorw抛出异常

Throws的作用:用来声明一个函数可能会产生异常,函数不对异常进行处理,调用函数的地方对异常进行处理。

参考:http://dev.yesky.com/61/8111561.shtml#top

最新文章

  1. javascript - 状态模式 - 简化分支判断流程
  2. CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Html、Ajax”(是否缺少程序集引用?)
  3. GridView多表关联
  4. win7安装virtualbox遇到的问题
  5. checkbox 全选,反选 ,全不选
  6. 如何利用java得到当前的时间和前一天的时间
  7. 关于Asp.Net MVC 中 UpdateModel 的未能更新***模型的 解决方案!
  8. SQL查看数据库所用用户表数量和使用的空间
  9. C - Minimum Inversion Number
  10. URAL1009
  11. 设置oracle11g空表exp导出
  12. LRU算法&amp;amp;&amp;amp;LeetCode解题报告
  13. HDU 5323 DFS
  14. 利用python的爬虫技术爬去糗事百科的段子
  15. 写JS自执行函数时要注意的
  16. kvm常见故障及解决
  17. Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块
  18. python 模拟实现一个ATM + 购物商城程序
  19. JDK 与TOMCAT的安装详解
  20. eCharts使用图表简单示例

热门文章

  1. HttpWebRequest访问时,错误:(401)未经授权。
  2. 下一代大数据系统和4S标准
  3. mysql命令整理0919 不定期更新中
  4. 你很牛B,面试却没过,为什么?
  5. APP完整的启动流程
  6. MSP430推荐网站
  7. 洛谷P1458 顺序的分数 Ordered Fractions
  8. js设计模式-单例模式
  9. druid parser
  10. vim中查找指定字符串