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

throw和throws的更多相关文章

  1. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  2. java中throw和throws的区别

    throw和throws的区别: throws 用在方法声明后面,跟的是异常类名 可以跟多个异常类名,用逗号隔开 表示抛出异常,由该方法的调用者来处理 throws表示出现异常的一种可能性,并不一定会 ...

  3. throw跟throws关键字

    throws关键字 定义一个方法的时候可以使用throws关键字声明.使用throws关键字声明的方法表示此方法不处理异常,而交给方法调用处进行处理. throws关键字格式: public 返回值类 ...

  4. 再探Java基础——throw与throws

    http://blog.csdn.net/luoweifu/article/details/10721543 异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被卡死,处于一直等待 ...

  5. Java异常之try,catch,finally,throw,throws

    Java异常之try,catch,finally,throw,throws 你能区分异常和错误吗? 我们每天上班,正常情况下可能30分钟就能到达.但是由于车多,人多,道路拥挤,致使我们要花费更多地时间 ...

  6. Java中的throw和throws的差别

    Java中的throw和throws的差别 1.throwkeyword用于方法体内部.而throwskeyword用于方法体部的方法声明部分: 2.throw用来抛出一个Throwable类型的异常 ...

  7. JAVA 异常 throw 与 throws

    最近一直throw和throw new …… 获取头部罢工,要彻底生气清楚这件事,他对这个思想精华收集了很多网友.这里摘录. throws全部异常信息throw则是指抛出的一个详细的异常类型.通常在一 ...

  8. 【Java学习笔记之三十二】浅谈Java中throw与throws的用法及异常抛出处理机制剖析

    异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被卡死,处于一直等待,或死循环. 异常有两个过程,一个是抛出异常:一个是捕捉异常. 抛出异常 抛出异常有三种形式,一是throw, ...

  9. Java中的throw和throws的区别

    Java中的throw和throws的区别 1.throw关键字用于方法体内部,而throws关键字用于方法体部的方法声明部分: 2.throw用来抛出一个Throwable类型的异常,而throws ...

  10. JAVA之旅(十)——异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别

    JAVA之旅(十)--异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别 不知不觉,JAVA之旅这个系列已经更新到第十篇了,感觉如梦如幻,时间 ...

随机推荐

  1. python实现批量ping IP,并将结果写入

    最近工作需要,写了一个Python小脚本,分享给大家,因为公司的IP用的差不多了,然后离职人员的IP有没有及时删除,导致没多少IP用了,所以做了一个python脚本跑了跑,清出来一堆ping不通的IP ...

  2. 用Asroute解决复杂状态切换问题

    项目地址:https://github.com/boycy815/asroute 首先明确几个概念 状态: 很多情况下,一个复杂的UI组件可能会有很多种不同的“状态”,不同的“状态”下组件本身对外界会 ...

  3. Oracle数据库(2)

    ; select ename,empno,deptno from emp where job='CLERK'; select * from emp where comm>sal; select ...

  4. 【教程】【FLEX】#003 自定义事件、模块间通讯

    本篇笔记,主要阐明 事件是如何创建 和 如何使用自定义事件达到模块之间通讯 的效果. 句子解释: 什么叫做模块之间的通讯呢?? 简单点说,就是两个模块之间可以互相传数据. A模块 可以接收到 B模块的 ...

  5. 慕课网-安卓工程师初养成-4-9 Java循环语句之 for

    来源:http://www.imooc.com/code/1425 Java 的循环结构中除了 while 和 do...while 外,还有 for 循环,三种循环可以相互替换. 语法: 执行过程: ...

  6. 学习总结 JDBC

  7. spring HibernateValidator 验证 子类不起作用

    spring HibernateValidator 验证 子类不起作用,在要验证的子类前加上@Valid即可. public class UserInfo { private int Id; @Val ...

  8. vimdiff vimmerge 配置及使用

    1 Set up vimdiff The vimdiff as a merge tool will display several buffers to show the yours/theirs/o ...

  9. ios开发之OC基础-类和对象

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  10. C# Socket网络编程精华篇(转)

    我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本 ...