自定义异常

/*

  • 自定义异常的三步骤
  • 1.定义:一般是继承Exception,重写构造
  • 2.设置:将该异常设置在某段代码中,复合条件则抛出
  • 3.触发:调用设置了异常的代码,符合条件则触发异常
    */
    先定义两个自定义异常:年龄异常 取款异常

AgeIllegalException

package SE02.n1Exception;
public class AgeIllegalException extends Exception{//年龄非法异常public AgeIllegalException() {super();// TODO 自动生成的构造函数存根}public AgeIllegalException(String message) {super(message);
//      System.out.println(message);// TODO 自动生成的构造函数存根}
}

BalanceNotEnoughException

package SE02.n1Exception;public class BalanceNotEnoughException extends RuntimeException{public BalanceNotEnoughException() {super();// TODO 自动生成的构造函数存根}public BalanceNotEnoughException(String message) {super(message);// TODO 自动生成的构造函数存根}}

注意:BalanceNotEnoughException我继承的是RuntimeException,这是Exception的一个子类
先介绍一下这个子类

RuntimeException

RuntimeException:运行时异常,这种异常我们不需要处理,完全由虚拟机接管。比如我们常见的NullPointerException,我们在写程序时不会进行catch或throw。

再写一个Person类并植入异常

package SE02.n1Exception;public class Person {int age=0;int balance=1000000;@Overridepublic String toString() {return "Person [age=" + age + "]";}public int getAge() {return age;}public void setAge(int age) throws AgeIllegalException {if(age>10000||age<0) {throw new AgeIllegalException("年龄非法");}this.age = age;}public void deposit(int money) {balance+=money;}public void withDraw(int money) {if(balance-money<0) {throw new BalanceNotEnoughException("钱不够");//可以看到在抛出本异常的时候,编译器并没有提示我们要抛出异常}balance-=money;}
}

Test类

package SE02.n1Exception;public class Demo04 {public static void main(String[] args){Person p = new Person();try {p.setAge(1000000);//触发AgeIllegalException} catch (AgeIllegalException e) {// TODO 自动生成的 catch 块e.printStackTrace();}p.withDraw(1000000000);//触发balanceNotEnoughException}
}

运行结果: SE02.n1Exception.AgeIllegalException: 年龄非法
at SE02.n1Exception.Person.setAge(Person.java:17)
at SE02.n1Exception.Demo04.main(Demo04.java:15)
Exception in thread “main” SE02.n1Exception.BalanceNotEnoughException: 钱不够
at SE02.n1Exception.Person.withDraw(Person.java:26)
at SE02.n1Exception.Demo04.main(Demo04.java:21)

总结:自定义异常还是比较简单的,新建一个自定义异常类,选择继承异常种类,再重写构造函数。然后在需要抛出异常的地方做判断,植入异常,具体语句:throw new xxxxxxException()

自定义Exception类相关推荐

  1. Java自定义Exception

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  2. php的异常处理,PHP异常处理Exception类

    异常(Exception)用于在指定的错误发生时改变脚本的正常流程. 什么是异常? PHP 5 提供了一种新的面向对象的错误处理方法. 异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程.这 ...

  3. RocketMQ-初体验RocketMQ(11)-过滤消息_自定义Java类筛选消息

    文章目录 概述 集群信息 项目结构 生产者 自定义类 消费者 测试结果 概述 RocketMQ-初体验RocketMQ(10)-过滤消息_SQL92表达式筛选消息 通过SQL92的方式,消费者可以过滤 ...

  4. java kafka 设置分区_Java kafka如何实现自定义分区类和拦截器

    Java kafka如何实现自定义分区类和拦截器 2.producer配置文件指定,具体的分区类 // 具体的分区类 props.put(ProducerConfig.PARTITIONER_CLAS ...

  5. 自定义工具类:工具类介绍

    自定义工具类 自定义注解 自定义注解 package com.learn.domain.poi;import java.lang.annotation.ElementType; import java ...

  6. 自定义python框架_Python web 框架Sanic 学习: 自定义 Exception

    Sanic 是一个和类Flask 的基于Python3.5+的web框架,它使用了 Python3 异步特性,有远超 flask 的性能. 编写 RESTful API 的时候,我们会定义特定的异常错 ...

  7. C++异常处理类与自定义异常处理类

    转自:http://blog.csdn.net/makenothing/article/details/43273137 例1:自定义一个继承自excepton的异常类myException C++标 ...

  8. java自定义注解类

    一.前言 今天阅读帆哥代码的时候,看到了之前没有见过的新东西, 比如java自定义注解类,如何获取注解,如何反射内部类,this$0是什么意思? 于是乎,学习并整理了一下. 二.代码示例 import ...

  9. java kafka 分区_Java kafka如何实现自定义分区类和拦截器

    生产者发送到对应的分区有以下几种方式: (1)指定了patition,则直接使用:(可以查阅对应的java api, 有多种参数) (2)未指定patition但指定key,通过对key的value进 ...

  10. 【开发随机】JAVA+POI+自定义注解+反射构建自定义工具类实现快捷简便的Excel模板化导出(附demo代码)

    220907更新 项目UAT期间,用户反映了一个问题,数据量稍大的情况下,会出现"从某一行开始,往下所有行设置的字体和字体大小不生效"的BUG. 经过排查,发现原因是:POI的XS ...

最新文章

  1. onethink的熟悉
  2. 修改程序配置文件 以及写一个结构体数组到文件(以及整数和结构体)
  3. 讨论下 Java 流文件读写缓存大小设置的问题
  4. centos7开放端口访问不了_基于TiUP cluster 在centos7系统上模拟生产环境部署TiDB数据库...
  5. SpringBoot的yml配置文件
  6. 使用事件委托降低重复的事件绑定,从而降低dom操作的对性能的消耗
  7. Apache JMeter 压试 HTTP接口
  8. 《零基础》MySQL 选择数据库(七)
  9. AWS Fargate告诉你:什么是容器即服务
  10. 值得推荐的13款可视化软件,快收藏!
  11. dom4j 解析xml Error on line 9717 of document 不允许有匹配 [xX][mM][lL] 的处理指令目标
  12. 08服务器端口映射,windows_Server_2008_R2_NAT服务器_端口映射.pdf
  13. iOS逆向-day1:逆向内容的简介与越狱环境搭建
  14. IT故事:软件测试点亮了我人生的烛光
  15. 降压恒流 LED 驱动器
  16. windows文件夹图标只显示一半,另一半被白框遮挡解决办法
  17. Validation校验属性格式
  18. HOG+ADABOOST方式训练头肩检测模型
  19. Python 爬虫——爬取文章自动发送QQ群
  20. 一味迎合观众,就会被淘汰

热门文章

  1. ios vue 添加本地音乐_苹果手机vue怎么添加自己的音乐
  2. Dva员工增删改查Demo实现-优化
  3. 计算机系统建模_包图
  4. MAC系统中快速切换输入法的方法
  5. CoreDNS篇7-性能压测
  6. 奇异谱分析(SSA)的matlab实现
  7. Java 中的 String、StringBuffer、StringBuilder
  8. mysql lob字段_数据库的LOB大字段的一些总结
  9. 数据库学习-关于存在量词exists的理解
  10. 从安卓/linux固件反编译出dtb和dts