一:IllegalArgumentException非法参数类,这个类继承父类RuntimeException

 public
class IllegalArgumentException extends RuntimeException

重载的几个构造方法都是直接调用父类的构造方法:

//无参数构造器,默认构造器
public IllegalArgumentException() {
super();
} //参数为字符串String的构造器
public IllegalArgumentException(String s) {
super(s);
} //参数为String以及Throwable两个参数构造器
public IllegalArgumentException(String message, Throwable cause) {
super(message, cause);
} //参数为Throwable的构造器
public IllegalArgumentException(Throwable cause) {
super(cause);
} private static final long serialVersionUID = -5365630128856068164L;

RuntimeException类是直接继承extends Exception类

public class RuntimeException extends Exception {
static final long serialVersionUID = -7034897190745766939L; public RuntimeException() {
super();
} public RuntimeException(String message) {
super(message);
} public RuntimeException(String message, Throwable cause) {
super(message, cause);
} public RuntimeException(Throwable cause) {
super(cause);
}

Exception类:

public class Exception extends Throwable {
static final long serialVersionUID = -3387516993124229948L; public Exception() {
super();
} public Exception(String message) {
super(message);
} public Exception(String message, Throwable cause) {
super(message, cause);
} public Exception(Throwable cause) {
super(cause);
}
}

而Exception类是继承Throwable类

 //无参数构造器
public Throwable() {
fillInStackTrace();
} //调用native方法,底层是c或者c++语言实现
public synchronized native Throwable fillInStackTrace();
//参数为String的构造器,描述异常信息
public Throwable(String message) {
fillInStackTrace();
detailMessage = message;
} private String detailMessage;
 //参数为String以及Throwable的构造器
public Throwable(String message, Throwable cause) {
fillInStackTrace();
detailMessage = message;
this.cause = cause;
}
//参数为Throwable的构造器
public Throwable(Throwable cause) {
fillInStackTrace();
detailMessage = (cause==null ? null : cause.toString());
this.cause = cause;
}

再来看一下Throwable中的其他的方法:

//异常的详细信息,就是在构造方法中封装的message
public String getMessage() {
return detailMessage;
}

  

//直接调用getMessage方法,返回的也是异常的描述信息
public String getLocalizedMessage() {
return getMessage();
}

  

//获取这个异常对象,因为这个cause异常对象初始化的时候
是this,就是它本身,所以如果没有变,就是null,否则是cause private Throwable cause = this; public Throwable getCause() {
return (cause==this ? null : cause);
}

  

二:自定义异常类

如果我们想要自定义异常类,只需要继承RuntimeException或者Exception类,然后

在构造方法中调用父类的构造方法就可以了。

源码分析七(java.lang包之IllegalArgumentException类)的更多相关文章

  1. 【jdk源码分析】java.lang.Appendable

    1.概述 public interface Appendable 能够被添加 char 序列和值的对象.如果某个类的实例打算接收取自 Formatter 的格式化输出,那么该类必须实现 Appenda ...

  2. JVM源码分析之Java对象头实现

    原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 “365篇原创计划”第十一篇. 今天呢!灯塔君跟大家讲: JVM源码分析之Java对象头实现 HotSpot虚拟机中,对象在内存中的布局分为三 ...

  3. tcprstat源码分析之tcp数据包分析

    tcprstat是percona用来监测mysql响应时间的.不过对于任何运行在TCP协议上的响应时间,都可以用.本文主要做源码分析,如何使用tcprstat请大家查看博文<tcprstat分析 ...

  4. vuex 源码分析(七) module和namespaced 详解

    当项目非常大时,如果所有的状态都集中放到一个对象中,store 对象就有可能变得相当臃肿. 为了解决这个问题,Vuex允许我们将 store 分割成模块(module).每个模块拥有自己的 state ...

  5. Vue.js 源码分析(七) 基础篇 侦听器 watch属性详解

    先来看看官网的介绍: 官网介绍的很好理解了,也就是监听一个数据的变化,当该数据变化时执行我们的watch方法,watch选项是一个对象,键为需要观察的数据名,值为一个表达式(函数),还可以是一个对象, ...

  6. Spring IoC 源码分析 (基于注解) 之 包扫描

    在上篇文章Spring IoC 源码分析 (基于注解) 一我们分析到,我们通过AnnotationConfigApplicationContext类传入一个包路径启动Spring之后,会首先初始化包扫 ...

  7. ABP源码分析七:Setting 以及 Mail

    本文主要说明Setting的实现以及Mail这个功能模块如何使用Setting. 首先区分一下ABP中的Setting和Configuration. Setting一般用于需要通过外部配置文件(或数据 ...

  8. Spring源码分析——资源访问利器Resource之实现类分析

    今天来分析Spring的资源接口Resource的各个实现类.关于它的接口和抽象类,参见上一篇博文——Spring源码分析——资源访问利器Resource之接口和抽象类分析 一.文件系统资源 File ...

  9. java.lang包【Object类】

    基本描述: (1)Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入: (2)Object类是所有Java类的祖先.每个类都使用 Obje ...

随机推荐

  1. [sql]sqlite3板子上安装运行报错

    不管是apt-get install还是deb直接安装都抱如下错误: SQLite header and source version mismatch -- ***** -- *****

  2. 获取linux内核的配置项(包含模块module)_转

    转自:提取已有的内核配置文件 由于有时候所做的内核配置文件需要移植到其他的内核源码中,此时又忘了保存,这时以下方法就可以满足你了. 1.首先这两个配置的位于(init/Kconfig): 2. 如果要 ...

  3. linux进程管理(四)

    [教程主题]:进程管理 [1]进程介绍 程序和进程 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序.什么是进程呢?进程就是运行中的程序. 一个运行着的程序,可能有多个进程. 比如自 ...

  4. MySQL优化之——安全地关闭MySQL实例

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46812371 关闭过程: 1.发起shutdown,发出  SIGTERM信号 2 ...

  5. ffmpeg 将jpg转为yuv

    ffmpeg -i temp.jpg -s 1024x680 -pix_fmt yuvj420p 9.yuv   此前网上有条盛传的命令 -y -s出来uv是错的

  6. mongoDB自动杀执行时间的连接

    ####shell 执行 mongo -u'root' -p'密码' admin mg.js [root@localhost ~]# cat mg.js var currOp = db.current ...

  7. Spring Boot 自定义属性 以及 乱码问题

    自定义属性 使用随机数及自定义配置类 中文乱码问题 1添加配置 2设置文件类型 1IDEA 2eclipse 自定义属性 application.properties提供自定义属性的支持,这样我们就可 ...

  8. 三篇文章了解 TiDB 技术内幕——说计算

    在这我们将关系模型简单理解为 Table 和 SQL 语句,那么问题变为如何在 KV 结构上保存 Table 以及如何在 KV 结构上运行 SQL 语句. 假设我们有这样一个表的定义: CREATE ...

  9. Java G1学习笔记

    引子 最近遇到很多朋友过来咨询G1调优的问题,我自己去年有专门学过一次G1,但是当时只是看了个皮毛,因此自己也有不少问题.总体来讲,对于G1我有几个疑惑,希望能够在这篇文章中得到解决. G1出现的初衷 ...

  10. PHP的Try, throw 和 catch

    PHP的Try, throw 和 catch   Try, throw 和 catch Try - 使用异常的函数应该位于 "try" 代码块内.如果没有触发异常,则代码将照常继续 ...