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

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

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

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

  1.  
  2. /**
  3. * 自定义异常类
  4. * */
  5. public class AgeOutOfBound extends Exception {
  6.  
  7. public AgeOutOfBound() {
  8. System.out.print("Sorry,age out of bound !");
  9. }
  10. }

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

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

3、

  1. /**
  2. * 测试类,如果有异常场则捕获
  3. * */
  4. public class Demo {
  5.  
  6. public static void main(String[] args) {
  7. int age = 100;
  8. try {
  9. AgeInput.checkAage(age);
  10. } catch (AgeOutOfBound e) {
  11. System.out.println("Are you rellly :" + age + " years old?");
  12. }
  13. }
  14.  
  15. }

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

    当age = 300,输出

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

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

http://download.csdn.net/detail/gaojiecaiandroid/6525621

补充:

下面说说throw和throws的区别

  1. 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()方法抛出的异常");//输出异常信息
    }
    }
    }
  1. 2throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用trycatch语句。举例如下:
    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("程序发生了其他的异常");
    //输出提示信息
    }
    }
    }

Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别的更多相关文章

  1. Java基础知识强化之IO流笔记04:throw和throws的区别

    1. throw概述 在功能方法内部出现某种问题,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出. 2. 案例演示: (1) package com.himi.throwdemo; p ...

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

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

  3. java异常和throw和throws的区别

    之前在编程中编译完成后,运行时,会遇见一些常见的错误,如NullPointerException,ArrayIndexOutOfBoundsException等等 在今天重新回顾学习了java异常,总 ...

  4. Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)

    Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)

  5. java基础之自定义异常类及throw和throws的区别

    一.异常的架构: Throwable类:所以异常类都是Throwable的子类,它派生两个子类 Error和Exception. Error类:表示仅靠程序本身无法恢复的的严重错误,比如内存溢出,虚拟 ...

  6. 异常机制及throw与throws的区别(转)

    异常机制及throw与throws的区别 分类: Java2008-11-14 16:08 9672人阅读 评论(5) 收藏 举报 exceptionstringjavafunclass编译器 Jav ...

  7. Java中的throw和throws的区别

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

  8. Java的异常处理throw和throws的区别

    区别一:              throw 是语句抛出一个异常:throws 是方法抛出一个异常:              throw语法:throw <异常对象>          ...

  9. java中throw和throws的区别

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

随机推荐

  1. 训练指南 UVA - 11478(最短路BellmanFord+ 二分+ 差分约束)

    layout: post title: 训练指南 UVA - 11478(最短路BellmanFord+ 二分+ 差分约束) author: "luowentaoaa" catal ...

  2. 洛谷——P1152 欢乐的跳

    P1152 欢乐的跳 题目描述 一个n个元素的整数数组,如果数组两个连续元素之间差的绝对值包括了[1,n-1]之间的所有整数,则称之符合“欢乐的跳”,如数组1 4 2 3符合“欢乐的跳”,因为差的绝对 ...

  3. 51nod 更难的矩阵取数问题(动态规划)

    更难的矩阵取数问题 给定一个m行n列的矩阵,矩阵每个元素是一个正整数,你现在 在左上角(第一行第一列),你需要走到右下角(第m行,第n列),每次只能朝右或者下走到相邻的位置,不能走出矩阵.然后再从右下 ...

  4. 27、Django实战第27天:全局搜索功能开发

    当我们选择其中一个类别(公开课,课程讲师,授课老师),输入搜索内容,点击搜索后会跳转到相应的列表页中进行展示 我们输入的内容作为参数keyword传入后台 搜索"公开课" 当课程中 ...

  5. ASP.NET Core 2.2 基础知识(七) 选项模式

    承接上一篇 配置, 选项模式是专门用类来表示相关配置的服务. 基本选项配置 新建一个选项类,该类必须是包含无参数的构造函数的非抽象类. public class MyOptions { public ...

  6. [Codeforces 8D] Two Friends

    Brief Introduction: 有两人a.b,他们都在A点,a经过B点到C点,而b直接到C点.a走过的距离不超过la,b走过距离不超过lb,询问他们可能经过最长的公共距离. Algorithm ...

  7. 【kruscal】【最小生成树】poj2421 Constructing Roads

    SB题,求最小生成树,其中有些边已经给您建好啦. 随意暴力即可. #include<cstdio> #include<algorithm> #include<cstrin ...

  8. CSS box-flex属性,然后弹性盒子模型简介(转)

    一.淡淡的开头语 昨天趁着不想工作的时间间隙闲逛24ways,在My CSS Wish List一文中,见到了个新鲜的CSS属性,就是题目中的box-flex,以前没有见过,顿生疑惑,不知是骡子还是马 ...

  9. 手把手教你使用FineUI开发一个b/s结构的取送货管理信息系统系列博文索引

    近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座,来讲解如何利用FineUI快速开 ...

  10. SQL Server 笔试题总结

    1:编写Sql语句,查询id重复3次以上的条目,表为Pram(id,name) 先看建立的表: SQL语句: 直接使用一个子查询即可 select * from Pram where id in(se ...