一、异常的架构:

Throwable类:所以异常类都是Throwable的子类,它派生两个子类 Error和Exception。

Error类:表示仅靠程序本身无法恢复的的严重错误,比如内存溢出,虚拟机错误等,这些异常除了尽力使程序安全退出外,我们并没有办法去解决,所以开发的时候我们更应该关注的是Exception

Exception类:由java应用程序抛出和处理的非严重错误,如文件找不到,网络连接中断,数组下标越界等,它的不同的子类分别对应不同类型的异常

运行时异常:包括RuntimeException类及其子类,不要求程序员必须对它们做出处理,如果程序发生运行时异常,而我们并没有处理,会输出异常的堆栈信息,并终止程序运行

Checked异常(非运行时异常):除了运行时异常外的其他由Exception继承来的异常类,程序必须捕获或者声明抛出这种异常。否则程序无法编译通过,如如IOException、SQLException等异常

二、自定义异常的步骤:

当JDK提供的异常类型不能满足程序的需求时,我们可以自定义异常

1.定义一个普通类,并继承exception或RuntimeExceprion,继承Exceprtion的自定义异常为Checked异常(必须抛出或者try cacth),继承自RuntimeExceprion的自定义异常类为运行时异常

2.编写异常类的构造方法,并继承父类实现,常见的如下:

/**
* 自定义异常类
*/
public class MyException extends Exception {
public MyException() {
} public MyException(String message) {
super(message);
} /**
*
* @param message 需要显示的异常信息
* @param cause 为Throwable或其子类的实例
*/
public MyException(String message, Throwable cause) {
super(message, cause);
} public MyException(Throwable cause) {
super(cause);
}
}

继承自Exception的自定义异常类

    @Test
public void getMessage() throws Exception {
try {
int a= 10/0;
} catch (Exception e) {
throw new MyException("10不能除以0");
}
}

继承自Exception的异常类的测试

除了继承自Exception还可以继承RuntimeException,具体例子就不往下写了

三、throw和throws的区别

主要区别有以下三点:

1、作用不同:throw用于在程序中抛出异常;throws用于在该方法内抛出了异常;

2、使用的位置不同:throw位于方法体内,可以作为单独语句使用;throws必须跟在方法参数列表的后面,不能单独使用;

3、内容不容:throw抛出一个异常对象,而且只能是一个;throws后面跟异常类,而且可以跟多个异常类

java基础之自定义异常类及throw和throws的区别的更多相关文章

  1. java中的异常体系?throw和throws的区别?

    一.java中的异常体系 Thorwable类(表示可抛出)是所有异常和错误的超类,两个直接子类为Error和Exception,分别表示错误和异常.其中异常类Exception又分为运行时异常(Ru ...

  2. JAVA之旅(十)——异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别

    JAVA之旅(十)--异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别 不知不觉,JAVA之旅这个系列已经更新到第十篇了,感觉如梦如幻,时间 ...

  3. 设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”。。。

    设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”,则抛出一个异常信息“This is a XYZ”,如果从命令行输入 ABC,则没有抛出异常.(只有 ...

  4. Java基础-DButils工具类(QueryRunner)详解

    Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...

  5. Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别

    如果java提供的系统异常类型不能满足程序设计的需求,那么可以设计自己的异常类型. 从java异常类的结构层次可以看出,java类型的公共父类为Throwable.在程序运行中可能出现俩种问题:一种是 ...

  6. Java基础之File类的使用

    Java基础之File类的使用 1.File类的构造方法和常用方法 2.对File中listFile(FileNameFilter name)学习 3.与File文件类相关的实现 File类的构造方法 ...

  7. Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)

    Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)

  8. java异常和throw和throws的区别

    之前在编程中编译完成后,运行时,会遇见一些常见的错误,如NullPointerException,ArrayIndexOutOfBoundsException等等 在今天重新回顾学习了java异常,总 ...

  9. Java中的throw和throws的区别

    Java中的throw和throws的区别 1.throw关键字用于方法体内部,而throws关键字用于方法体部的方法声明部分: 2.throw用来抛出一个Throwable类型的异常,而throws ...

随机推荐

  1. Hello Object Oriented!

    继计组之后,北航计算机学院又一大神课! 希望能以此为契机,和更多热爱技术的朋友们交流.让我们一起,共同进步~ [2019.4.27更新] 建立博客园的最初目的,是为了北航计算机学院OO课程设计的需要. ...

  2. 洛谷P1896 互不侵犯

    又是一道状压DP求方案数的题... 多了一个放k个的限制,于是我们把数组多开一维. f[i][j][k]表示前i行放了j个,第i行状态为k的方案数. 然后老套路DFS转移,这次要多记录一个cnt表示上 ...

  3. (六)Oracle 的 oracle表查询关键字

    参考:http://www.hechaku.com/Oracle/oracle_tables2.html 1.使用逻辑操作符号问题:查询工资高于500或者是岗位为manager的雇员,同时还要满足他们 ...

  4. 斯坦福大学公开课机器学习:advice for applying machine learning - deciding what to try next(设计机器学习系统时,怎样确定最适合、最正确的方法)

    假如我们在开发一个机器学习系统,想试着改进一个机器学习系统的性能,我们应该如何决定接下来应该选择哪条道路? 为了解释这一问题,以预测房价的学习例子.假如我们已经得到学习参数以后,要将我们的假设函数放到 ...

  5. linux less对文件内容进行搜索

    [ 可以先用 less 文件名 来打开文件, 然后可以按回车,打开底部命令输入行(即出现一个冒号的位置), 然后可以使用  键盘上的 home 键跳到文件开始,end键跳到最后,PgUp向前翻页,Pg ...

  6. io系列之常用流二

    一.对象的序列化.持久化. 将java的对象的基本数据类型和图形存入文件中,实现对象数据的序列化和持久化. 操作对象可以使用: ObjectOutPutStream 和 ObjectInPutStre ...

  7. request 对于cookie,session, json的处理

    一.cookie是存放在客户端,session是存放在服务端. 因为http是无状态的,当客户端发送请求给服务端的时候,服务端为了区分下一次发送请求的是不是同一个客户,那么就需要用一种方式记录下这个客 ...

  8. SpringCloud第二弹(高可用Eureka+Ribbon负载均衡)

    先建立父工程 .. ..一路next 搭建注册中心(需要建立三个工程,端口不一样) .. .. .. 修改入口类 package com.cloud.eurekaserver1111; import ...

  9. 【NOI2013模拟】坑带的树(仙人球的同构+圆方树乱搞+计数+HASH)

    [NOI2013模拟]坑带的树 题意: 求\(n\)个点,\(m\)条边的同构仙人球个数. \(n\le 1000\) 这是一道怎么看怎么不可做的题. 这种题,肯定是圆方树啦~ 好,那么首先转为广义圆 ...

  10. ES6学习:Map结构的目的和基本用法

    Map结构的目的和基本用法 JavaScript的对象(Object)本质上是键值对的集合(Hash结构),但是只能用字符串作为键.这给它的使用带来了很大的限制.   1 2 3 4 5 6 7 8 ...