一、异常的架构:

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后面跟异常类,而且可以跟多个异常类

最新文章

  1. 阿里云centos7基于搭建VPN
  2. Gate level Simulation(门级仿真)
  3. django入门记录 2
  4. 内存中 OLTP - 常见的工作负荷模式和迁移注意事项(二)
  5. centos用yum安装mysql-server
  6. 第五章:大数据 の HBase 进阶
  7. [No000019A]【波浪理论精典教学课程】
  8. MySQL 误删数据、误更新数据(update,delete忘加where条件)
  9. 当input中的type值为file时,各浏览器的表现形式不同
  10. LeetCode算法题-Convert a Number to Hexadecimal(Java实现)
  11. PMP:3.项目经理角色
  12. 去除Many2one字段的“创建并编辑”选项
  13. WindowManager$BadTokenException: Unable to add window permission denied for this window type
  14. C和C指针小记(十二)-函数的可变参数表
  15. [sh]shift参数左移用法
  16. bsgs整理
  17. CentOS6.x服务器OpenSSH平滑升级到7.3p版本——拒绝服务器漏洞攻击
  18. Delphi中 弹出框的用法
  19. How to add Leading Zeroes to a Number (Delphi Format)
  20. 使用echo命令清空tomcat日志文件

热门文章

  1. PHP函数memory_get_usage获取PHP内存清耗量
  2. 网页发起qq临时会话
  3. Struts2上传文件出错
  4. nginx buffered to a temporary 解决
  5. Collection 接口
  6. MYSQL二进制5.7.安装
  7. Go GraphQL初学者教程
  8. chrome截图全网页
  9. 网络运维必回的模拟器-GNS软件下载和安装
  10. OS + Linux RedHat 7 / redhat 7 configuration