Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别

如果java提供的系统异常类型不能满足程序设计的需求,那么可以设计自己的异常类型。

从java异常类的结构层次可以看出,java类型的公共父类为Throwable.在程序运行中可能出现俩种问题:一种是由硬件系统或JVM导致的故障,java定义该故障为Error,这类问题是用户程序不能够处理的;另外一种问题是程序运行错误,java定义为Exception,这种情况下,可以通过程序设计调整来实现异常处理。

因此,用户定义的异常类型必须是Throwable的直接或间接子类。我推荐大家的异常类型以Exception为直接父类。下面开始我们的自定义异常类之旅... 

1、首先定义自己的异常类AgeOutOfBound

 

/**
* 自定义异常类
* */
public class AgeOutOfBound extends Exception {

public AgeOutOfBound() {
System.out.print("Sorry,age out of bound !");
}
}

2、定义一个类,根据参数值判断是否抛出异常

/**
 * 定义一个方法,根据参数值决定是否抛出异常
 * */
public class AgeInput {
    public static void checkAage(int age)throws AgeOutOfBound{    //用关键字throws指明调用此方法可能抛出的异常
        if(age>0 && age<200){
            System.out.print("right!");
        }else{
            System.out.println("---------------");
            throw new AgeOutOfBound();        //抛出异常用关键字throw
        }
    }
}

3、 

/**
 * 测试类,如果有异常场则捕获
 * */
public class Demo {

    public static void main(String[] args) {
        int age = 100;
        try {
            AgeInput.checkAage(age);
        } catch (AgeOutOfBound e) {
            System.out.println("Are you rellly :" + age + " years old?");
        }
    }

}

运行结果:当age=100,输入right

当age = 300,输出

---------------
Sorry,age out of bound !Are you rellly :300 years old?

如有哪里不懂,可以到这里下载项目代码

------------------------------------------分割线------------------------------------------

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2014年资料/9月/29日/Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割线------------------------------------------

补充

下面说说throw和throws的区别
throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。如下面例子所示:
public class Shoot {  创建类
static void pop() throws NegativeArraySizeException {
//定义方法并抛出NegativeArraySizeException异常
int [] arr = new int[-3];//创建数组
}
public static void main(String[] args) {//主方法
try {
pop(); //调用pop()方法
} catch (NegativeArraySizeException e) {
System.out.println("pop()方法抛出的异常");//输出异常信息
}
}
}

2、throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。举例如下:
class MyException extends Exception { //创建自定义异常类
 String message; //定义String类型变量
 public MyException(String ErrorMessagr) {  //父类方法
      message = ErrorMessagr;
 }
 public String getMessage(){  //覆盖getMessage()方法
  return message;
 }
}
public class Captor { //创建类
static int quotient(int x,int y) throws MyException{//定义方法抛出异常
if(y < 0){  //判断参数是否小于0
        throw new MyException("除数不能是负数");//异常信息
 }
 return x/y;//返回值
 }
public static void main(String args[]){ //主方法
 try{ //try语句包含可能发生异常的语句
                int result = quotient(3,-1);//调用方法quotient()
    }catch (MyException e) { //处理自定义异常
  System.out.println(e.getMessage()); //输出异常信息
  }
    catch (ArithmeticException e) {
                  //处理ArithmeticException异常
  System.out.println("除数不能为0");//输出提示信息
  }
  catch (Exception e) { //处理其他异常
  System.out.println("程序发生了其他的异常");
                  //输出提示信息
  }
 }
}

大话设计模式(带目录完整版) PDF+源代码 http://www.linuxidc.com/Linux/2014-08/105152.htm

Java中介者设计模式 http://www.linuxidc.com/Linux/2014-07/104319.htm

Java 设计模式之模板方法开发中应用 http://www.linuxidc.com/Linux/2014-07/104318.htm

设计模式之 Java 中的单例模式(Singleton) http://www.linuxidc.com/Linux/2014-06/103542.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-09/107378.htm

Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别
更多相关文章
  • 1.用户层发生指令异常的处理流程? 用户层程序正在执行时,遇到未定义的指令(ARM不是别的指令)或者SWI软件中断指令(产生系统调用),就会产生异常,这里以未定义指令异常为例进行说明:          一旦出现未定义指令异常,CPU会自动做如下操作: (1)未定义模式(ARM其中运行模式的一种)下 ...
  • Java提取用户电脑CPU编号和网卡编号
    最近在做一个客户端监控的功能,需要提取用户电脑的CPU编号和网卡的编号,采集用户的登陆数据,据我所知道直接通过Java来调用操作系统的信息是非常困难的事情(我好像没有发现JavaAPI提供了这个功能),那这样的话只能通过JNI访问系统的信息了,不过有个SWT扩展的插件org.eclipse.swt. ...
  • Date中文就是日期时间的问题在java中使用date函数就可以创建日期时间出来,下面我们一起看看关于java创建Date日期时间笔记,希望文章对各位有所帮助.(1)public Date() 创建的日期类对象的日期时间被设置成创建时刻相对应的日期时间. 例:Java代码 1.Date today= ...
  • java 正则表达式之pattern类 matcher类
    本文章分享了关于java 正则表达式之pattern类 matcher类入门教程,有需要学习的同学可以参考一下.一.正则表达式基础知识 我们先从简单的开始.假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”.如果搜索对大小写不敏感,单词“catalog”.“Catherin ...
  • 很多业务都需要创建用户,创建日期,更新用户,更新日期,这样的字段,只需要用Interceptor即可实现自动赋值. 首先创建四个注解 /**  * Declares a field as the one representing the principal that created the enti ...
  • 本文章来给各位同学介绍关于Java中Hibernate持久化类(map)集合属性的元素为组件的映射,希望此教程对大家有所帮助哦.1.hibernate.cfg.xml 代码如下 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernat ...
  • 一个关于使用Simple Inheritance来创建自己的类实例,希望此文章对各位学同会有所帮助.最近一直再研究类的写法.因为经常做一些可复用,可扩展的方法.之前一直使用别人包装好的组件,比如玉伯开发的Alare组件,用的很舒服啊~~但是不是什么项目都要使用那么复杂的组件吧,如果用JQ自己写一个呢 ...
  • 为什么我要讲是mysql 5呢,因为以前的版本我们可以直接使用INSERT向mysql表中插入mysql用户了,后来后mysql5之后完善了就不可以这么操作了,下面我来介绍MySql 5.X创建用户并授权方法有需要了解的朋友可参考.在mysql的user表中增加连接用户帐号:这里不要直接使用INSE ...
一周排行