【java】自定义异常类
目录结构:
- 为什么需要自定义异常类
- 自定义异常的方式
- 实例
- 日常日志
一,为什么需要自定义异常类
当java中的异常类型没有能够满足我们所需的异常的时候就需要自定义异常类。
二,自定义异常的方式
a.自定义异常类继承Exception或者其子类。
b.提供一个无参的和一个有参数的构造方法。
三,实例
写一个Person类,同时定义AgeException,当年龄输入不合法时,抛出异常。
AgeException异常类:
![](/assets/blank.gif)
![](/assets/blank.gif)
/** 自定义异常需要继承Exception或其子类* 同时需要提供两个构造方法,第一个是无参构造,第二个是带字符串的构造*/ public class AgeException extends Exception {/** 这里之所以需要序列化ID,是因为从JDK1.4开始,* 异常信息已经添加到该类的序列化表示形式,* 所以如果需要打印异常信息,* 也就是在捕获异常的时候需要调用 e.printStackTrace() 那么就需要声明序列化ID。* 如果在捕获异常后不打印错误信息,就不需要声明序列化ID。*/private static final long serialVersionUID = 1L;public AgeException(){//无参构造super();}public AgeException(String str){//带字符串的构造super(str);}public AgeException(Throwable cause){//从jdk1.4开始,带异常对象的构造方法,可以存储异常产生的源信息,如果需要存储异常的源信息,推荐使用这个super(cause);} }
AgeException
Person类
![](/assets/blank.gif)
![](/assets/blank.gif)
/** 实现Person类的封装*/ public class Person {private String name;private int age;public Person() {super();}/** 抛出异常*/public Person(String name, int age) throws AgeException {super();setName(name);/** 当年龄在0到150之间是合法的* 当年龄不合法的时候,就new一个AgeException并且抛出*/if(age>0 && age<150){setAge(age);}else{//抛出异常类AgeExceptionthrow new AgeException("年龄不合法");}}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;} }
Person
测试类
![](/assets/blank.gif)
![](/assets/blank.gif)
public class TestPerson {public static void main(String[] args) {/** 创建一个Person对象*/Person person=null;try {//创建Person对象的时候传入不合法的年龄person=new Person("jame",-1);} catch (AgeException e) {//打印异常信息 e.printStackTrace();}finally{//打印对象 System.out.println(person); }} }
TestPerson
四,异常日志
下面的封装类可以收集java中抛出的异常信息
![](/assets/blank.gif)
![](/assets/blank.gif)
package cn.jd.util;import java.io.File; import java.io.FileOutputStream; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date;/*** 用来收集异常日志** JavaEE web阶段** 当产生异常时, 应把异常收集起来 ,** 存储到* 本地文件* 网络存储* 短信发送* 邮件*/ public class ExceptionUtil {/*** * 存储: * 在存储的目录下 ,按照每天的日期创建单独文件夹* * 每天的文件夹中, 异常日志存储的文件, 一个异常一个文件, 文件名称按照时-分-秒-毫秒的格式存储* * * @param e 要存储的异常信息* @param exceptionPath 要存储的位置: 是一个文件夹, 文件夹可以不存在* @throws Exception */public static void toException(Exception e,File exceptionPath) throws Exception{if(!exceptionPath.exists()){//创建文件夹 exceptionPath.mkdirs();}Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String day = sdf.format(date);//创建每天的异常文件夹File dayDir = new File(exceptionPath, day);if(!dayDir.exists())dayDir.mkdirs();//创建本次异常存储的文件SimpleDateFormat sdf2 = new SimpleDateFormat("HH-mm-ss-sss");String fileName = sdf2.format(date);File file = new File(dayDir, fileName+".txt");//创建一个字符打印流 , 指向创建的这个文件PrintWriter pw = new PrintWriter(new FileOutputStream(file));//将异常信息输出至这个文件 e.printStackTrace(pw);pw.close();}/*** * @param e 要存储的异常信息 , 存储的位置 ,在F://log文件夹中*/public static void toException(Exception e){try {toException(e,new File("F://log"));} catch (Exception e1) {// TODO Auto-generated catch block e1.printStackTrace();}}}
ExceptionUtil.java
转载于:https://www.cnblogs.com/HDK2016/p/6830719.html
【java】自定义异常类相关推荐
- java+自定义异常类+输入若干成绩 为负数时输出抛出异常_java+自定义异常类+输入若干成绩 为...
java+自定义异常类+输入若干成绩 为 [2021-02-10 19:00:54] 简介: java中定义类的关键字是:"class".在Java中定义一个类,需要使用&quo ...
- Java自定义异常类以及异常拦截器
Java自定义异常类以及异常拦截器 参考文章: (1)Java自定义异常类以及异常拦截器 (2)https://www.cnblogs.com/acm-bingzi/p/java_exception. ...
- Java 自定义异常类
Java提供的异常类不够使用我们可以及自定义异常类: 格式: public class xxxException extends Exception/RuntimeException{ 添加一个空 ...
- java自定义异常类的父类_Java 自定义异常类
/* *自定义异常类 * sun提供了很多的异常类给我们用于描述程序中各种的不正常情况,但是sun给我提供异常类还不足以描述我们现实生活中所有不正常情况,那么这时候我们就需要自定义异常类. * * 需 ...
- java自定义异常类
下文笔者讲述使用java代码定义一个自定义异常的方法分享,如下所示: 在日常开发中,有些业务逻辑对应的异常类,系统并未进行定义,那么此时就需要我们自定义异常类进行实现,下文笔者将讲述自定义异常类的方法 ...
- java自定义异常类_java中自定义异常类
hello,大家好,今天跟大家分享一下java中如何自定义异常,以后如果有新的心得,再添加,欢迎前辈指导... 首先,上Api,看一下异常和错误的父类: 然后,现在假设我有个循环(i=0;i<1 ...
- java 自定义异常类_Java实现自定义异常类
自定义异常类步骤 创建一个类继承异常父类Exception 在具体的实现方法首部抛出异常类(自己创建的那个类),throws的运用 在具体的实现方法的内部抛出异常信息,throw的运用 创建一个类继承 ...
- java自定义异常类_Java抛出异常与自定义异常类应用示例
本文实例讲述了Java抛出异常与自定义异常类.分享给大家供大家参考,具体如下: 异常处理常用方法: 常用的异常处理方法有: 一.try()catch() 语句 二.throw / throws 语句 ...
- Java——自定义异常类
为什么要自定义异常类? 当我们在输入成绩,输入工资,取款的时候,往往都有一个范围,而这个范围不是JVM能够识别的,因此在输入的时候就容易出错,因此在这些时候JDK中的异常无法满足我们的需求,我们只能自 ...
- [转载] java自定义异常类以及全局log打印
参考链接: 用Java打印异常消息的3种不同方式 import lombok.Data; /** * @author 01369526 * */ @Data @SuppressWarnings(&qu ...
最新文章
- CodeForces-734E Anton and Tree 树的直径
- 20200314 SQ Intel Realsense D435 USB 线长、转接线个数测试数据表
- extjs6 引入ux_关于UX以及如何摆脱UX的6种常见误解
- 我的mongoose代码备份
- promise用法_Promise的秘密
- 实例标识助力您的应用迁上云端
- 梯度为什么是函数增加最快的方向
- java实验室管理系统报告_基于JAVA的实验室信息管理系统设计与实现
- python如何用opencv把一个视频按每10秒一小段切割
- c语言结构体应用例程:输入今天日期,输出明天日期
- html5 微信返回按钮,《解决微信内置浏览器返回上一页强制刷新问题方法》(示例代码)...
- centos7安裝搜狗輸入法_sogou-input-in-centos7
- 第十章Tensorflow图像处理
- 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xaf\x8c\xe7\x9)的解决方法
- 不凡的夫夫 斯特林公式的应用
- Http请求之GET,POST,PUT,DELETE方法详解
- Instagram帖子如何隐藏喜欢和查看计数?
- Error:A1163E:UNknow opcode
- OpenSees开发(一)windows 上编译opensees (使用vs2005)
- 3D空间中的点坐标转化为屏幕二维点坐标(一)