java学习——45、自定义异常类

之前抛出的均为Exception异常,只能在catch(Exception e){}中被捕获并处理,但由catch(Exception e)捕获到的异常对象包含了Java定义的所有的异常对象。

如果要区分到底是自己抛出的异常还是在Exception中由Java已定义的异常只能由e.toString来识别。

更好的办法是,自定义异常类。

  • 自定义异常类

就是由用户自己为可能发生的异常声明为一个异常类,由其对异常进行处理。

自定义的异常类,也需要由catch子句捕获并处理。

自定义的异常类必须是Exception的子类。

以例题说明如何定义及使用,代码中关键部分用注释说明:

//此为声明的异常类,此异常用于捕获并处理日期的异常。

//本例捕获由类中抛出的错误,并对其进行处理

//本例的处理很简单,仅输出其错误

public class DateFormatException extends Exception{

public DateFormatException(){

System.out.println("wowo");

}

public DateFormatException(Strings){

if(s.equals("年份错误"))//如果年份错误,如何处理

System.out.println("年份错误,请重新输入年份");

if(s.equals("月份错误"))//如果月份错误,如何处理

System.out.println("月份错误,请重新输入月份");

if(s.equals("天数错误"))//如果天数错误,如何处理

System.out.println("天数错误,请重新输入天数");

}

}

//此类用来辅助学习自定义异常类

public class erro {

private inyear,month,day;

public erro(){

this(1986,1,1);

}

public erro(int year,int month,int day){

this.year=year;

this.month=month;

this.day=day;

}

//set方法要抛出异常,抛出的异常会被类 DateFormatException接收并处理

public void set(int year,int month,int day) throws DateFormatException

{

if(year<0||year>2018)

thrownew DateFormatException("年份错误");//抛出异常,会调用DateFormatException中带参的构造函数

else

this.year=year;

if(month<0||month>12)

throw new DateFormatException("月份错误");//抛出异常,会调用DateFormatException中带参的构造函数

else

this.month=month;

if(day<0||day>31)

throw new DateFormatException("天数错误");//抛出异常,会调用DateFormatException中带参的构造函数

else

this.day=day;

}

public static void main(String args[]){

erro ab=new erro();

try{

ab.set(2500,12,25);//年份大于规定年份,会出错

}

catch(Exception e){

}

try{

ab.set(2000,15,25);//月份大于规定年份,会出错

}

catch(Exception e){

}

try{

ab.set(2000,12,55);//天数大于规定年份,会出错

}

catch(Exception e){

}

finally{

System.out.println("Congratuations,zxx");

}

}

}

其运行结果如下:

年份错误,请重新输入年份

月份错误,请重新输入月份

天数错误,请重新输入天数

Congratuations,zxx

(0)

相关推荐

  • Excel中常用日期函数的用法:14个公式满足工龄、年龄、账龄计算

    [温馨提示]亲爱的朋友,阅读之前请您点击[关注],您的支持将是我最大的动力! 在Excel中,日期是可以参与计算的,比如我们工作中计算星期.年龄.工龄.账龄.利息,以及复杂一点的汇总某个时间段的数据等 ...

  • 简单6步,用Excel做一个动态万年历

    说到用Excel制作万年历,很多小伙们们都学得太难了. 虽然 Excel提供了各式各样的日历模板,需要时可搜索选择使用. 但是,这些模板有一个共同点,就是公式冗长复杂,难以理解,这让很多想要参考模板自 ...

  • POWER QUERY--日期时间列的特殊操作

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 对于日期和时间数据列,有一些特殊的操作,来完成特殊的数据处理. 执行&qu ...

  • Excel中14个常用的日期与时间函数,动画演示,中文解读

    [温馨提示]亲爱的朋友,阅读之前请您点击[关注],您的支持将是我最大的动力! 前天的教程中汇总了16个文本函数的用法,小伙伴们在工作中应用得如何?今天阿钟老师又整理了14个日期和时间函数的用法.在Ex ...

  • Java学习——38、类的抽象性

    抽象是研究复杂对象的基本方法,从复杂对象中抽象出本质特征,忽略次要细节,使某些信息和实现对于使用者不可见.抽象层次越高,其软件利用程序越高. 1.抽象类 使用关键字abstract声明的类为抽象类. ...

  • Java学习——37、类的多态(二)

    类型的多态主要体现在:子类是一种父类类型. 子类通过继承扩充和发展了它的父类,子类是父类的一种特殊类型. 1.子类对象即是父类对象 子类对象包含了父类的所有成员,包括成员变量和成员方法,所以子类对象也 ...

  • Java学习——36、类的多态(一)

    多态性是指"一种定义,多种实现".例如,画画.同是画画,但每一个人,会画出来不同的画,这就是多态. 多态主要有方法的多态和类型的多态. 今天介绍方法的多态. 方法的多态包括方法的重 ...

  • Java学习——34、类的继承

    面向对象四大特性:封装.继承.多态.抽象. 今天介绍继承. 继承是面向对象的核心特性,能够最大限度地实现代码复用. 1.  由继承派生类 继承允许在已有类的基础上创建新类. 创建的新类叫做子类(或派生 ...

  • Java学习_Java核心类

    字符串和编码 字符串在String内部是通过一个char[]数组表示的,因此,可以按下面的写法: String s2 = new String(new char[] {'H', 'e', 'l', ' ...

  • java学习——49.标签、文本行、按钮类

    java学习——49.标签、文本行、按钮类

  • java学习——48.容器、窗口、面板和框架类

    java学习——48.容器、窗口、面板和框架类

  • java学习——47、AWT组件类

    AWT(Abstract Window Tookit,抽象窗口工具集),主要包括组件(component).容器(container).窗口(Window).面板(Panel).框架(Frame).对 ...

  • java学习——28.类和对象

    面向对象程序设计(Object Oriented Programming,OOP)是基于对象概念的软件设计方法. Java是纯面向对象的程序设计语言,具有面向对象的所有的特性. 今天介绍类和对象. 面 ...