JAVA_SE基础——55.自定义异常类
在Java中已经提供了大量的异常类,但是这些异常类有时野很难满足开发者的要求,所以用户可以根据自己的需要来定义自己的异常类。但自定义的异常类必须继承自Exception或其子类。
可以自定义出的问题称为自定义异常。对于除数为0的情况,可以用ChuShu0异常来表示,除数为0这种异常在java中并没有定义过。那就按照java异常的创建思想,面向对象,将除数为0进行自定义描述,并封装成对象。这种自定义的问题描述称为自定义异常。
code1中体现→自定义类继承Exception或者其子类,通过构造函数定义异常信息。
code1
Class ChuShu0 extends Exception{
DemoException(String message){
super(message);//调用Exception有参的构造方法
}
}
在实际开发中 如果没有特殊要求,自定义的异常类只需继承Exception类,在构造方法中使用super()语句调用Exception的构造方法即可。
既然定义了 自定义的异常类 ,那么怎么使用呢? 其实使用方法和Exception类及其子类是一样的用法的,还是那2种处理方式。
code2中体现→下面来看下除数为0的异常演示
code2
package day10;
class ChuShu0Exception extends Exception{
public ChuShu0Exception(String msg){
super(msg);
}
}
public class TestException3 { public static void main(String[] args){
try{
int result = divide(4,0);
System.out.println(result);
}catch(Exception e){
e.printStackTrace();
}
}
public static int divide(int a , int b ) throws Exception {
if(b==0){
throw new ChuShu0Exception("除数为0");
}
int result = a/b ;
return result ;
}
}
运行结果:
day10.ChuShu0Exception: 除数为0
at day10.TestException3.divide(TestException3.java:19)
at day10.TestException3.main(TestException3.java:11)
P.S.
code3中体现→如果自定义类继承的是RuntimeException,那么运行时异常的特点是Java编译器不会对其进行检查,也就是说,当程序中出现这类异常时,既没有受用try...catch语句捕获或使用throws关键字声明抛出,程序也能编译通过,如果有异常产生,则异常将由JVM进行处理(继续往上抛,直至抛给JVM)
code3
package day10;
class ChuShu0Exception extends RuntimeException{
public ChuShu0Exception(String msg){
super(msg);
}
}
public class TestException3 { public static void main(String[] args){
//try{
int result = divide(4,0);
System.out.println(result);
//}catch(Exception e){
// e.printStackTrace();
//}
}
public static int divide(int a , int b ){
if(b==0){
throw new ChuShu0Exception("除数为0");
}
int result = a/b ;
return result ;
}
}
运行结果:
Exception in thread "main" day10.ChuShu0Exception: 除数为0
at day10.TestException3.divide(TestException3.java:19)
at day10.TestException3.main(TestException3.java:11)
交流企鹅:654249738,和自学者交流群:517284938
JAVA_SE基础——55.自定义异常类的更多相关文章
- java基础之自定义异常类及throw和throws的区别
一.异常的架构: Throwable类:所以异常类都是Throwable的子类,它派生两个子类 Error和Exception. Error类:表示仅靠程序本身无法恢复的的严重错误,比如内存溢出,虚拟 ...
- Java基础(55):Exception类详解(转)
Java中的异常 Exception java.lang.Exception类是Java中所有异常的直接或间接父类.即Exception类是所有异常的根类. 比如程序: public class Ex ...
- JAVA_SE基础——70.Math类
package cn.itcast.other; /* Math 数学类, 主要是提供了很多的数学公式. abs(double a) 获取绝对值 ceil(double a) 向上取整 ...
- JAVA_SE基础——68.RunTime类
RunTime类代表Java程序的运行时环境,每一个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与运行时环境相连,应用程序不能创建自己的Runtime实例,但可以通过getRu ...
- JAVA_SE基础——67.System类
System类对大家都不陌生吧! 以前经常需要打印结果时使用的都是"System.out.println()"语句,这句代码中就使用了System类.System类定义了一些与系统 ...
- JAVA_SE基础——66.StringBuffer类 ③
如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer). StringBuffer 其实就是一个存储字符 的容器. 容器的具备 的行为 常用方法 String 增加 ap ...
- JAVA_SE基础——65.StringBuffer类 ②
字符串特点:字符串是常量:它们的值在创建之后不能更改. 字符串的内容一旦发生了变化,那么马上会创建一个新 的对象. 注意: 字符串的内容不适宜频繁修改,因为一旦修改马上就会创建一个新的对象 ...
- JAVA_SE基础——64.StringBuffer类 ①
字符串特点:字符串是常量:它们的值在创建之后不能更改 字符串的内容一旦发生了变化,那么马上会创建一个新的对象. 注意:字符串的内容不适宜频繁修改,因为一旦修改马上就会创建一个新的对象. publ ...
- JAVA_SE基础——71.Random类制作随机验证码
public class Demo5 { public static void main(String[] args) { char[] arr={'s','b','g','h','a','c'}; ...
随机推荐
- 对网易云音乐参数(params,encSecKey)的分析
我们如果对网易云音乐进行爬虫的话,我们会发现,提交的参数是(params,encSecKey),然而这两个参数是一串很长的东西 我们要对网易云进行爬虫,那么就一定要将这两个参数弄明白,然后才可以进行爬 ...
- quartz.net 3.x 使用总结
quartz文档:https://www.quartz-scheduler.net/documentation/index.html 这里用新建的控制台项目进行演示. 目标效果为每隔一秒在控制台上输出 ...
- 在windows8.1下安装ubuntu16.04
(一)首先来简要了解一些linux的概念! 1.发行版本和内核版本的区别与联系:linux发行版本是"内核版本+一系列挂载软件"的集合体,光是一个内核版本是无法当做操作系统运行的. ...
- Selenium元素定位之Xpath
Xpath非常强大,使用Xpath可以代替前六种基本的定位方式,这种定位方式几乎可以定位到页面上的任何元素. Xpath简介 Xpath就是xml path,是一种在xml中查找信息的语言,因为htm ...
- OSI模型和TCP/IP协议族(一)
1990年以前,再数据通信和组网文献中占主导地位的分层模型是开放系统互连(Open System Interconnnection,OSI)模型.当时所有人都认为OSI模型将是数据通信的最终标准,然而 ...
- Spring Boot会员管理系统——处理文件上传
温馨提示 Spring Boot会员管理系统的中,需要涉及到Spring框架,SpringMVC框架,Hibernate框架,thymeleaf模板引擎.所以,可以学习下这些知识.当然,直接入门的话使 ...
- Mimikatz的使用心得
Mimikatz是一款由法国人编写的轻量级调试工具,但更为人所知的是使用Mimikatz来获取Windows的明文密码. 这个软件的作者博客:http://blog.gentilkiwi.com/mi ...
- 数据定义: CREATE、DROP、ALTER
CREATE DATABASE 句法 CREATE DATABASE [IF NOT EXISTS] db_name 数据库.表.索引.列和别名 中被给出. 如果数据库已经存在,并且你没有指定 IF ...
- 智能合约语言 Solidity 教程系列2 - 地址类型介绍
Solidity教程系列第二篇 - Solidity地址类型介绍. 写在前面 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是 ...
- Y2K问题
关于第五章 团队和流程 2.6 特工团队中所提到的Y2K问题,第一次接触到这个名词去百度了,它的意思是这样的:year 2K problem,又称千年虫问题.主要原因是早期的软件大多以两位数字来记录年 ...