java 异常throw_java基础之自定义异常类及throw和throws的区别

一、异常的架构:

c75a249a6d967f1bfe09cc41e6ea8918.png

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

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

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

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

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

二、自定义异常的步骤:

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

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

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

/*** 自定义异常类*/

public class MyException extendsException {publicMyException() {

}publicMyException(String message) {super(message);

}/***

*@parammessage 需要显示的异常信息

*@paramcause 为Throwable或其子类的实例*/

publicMyException(String message, Throwable cause) {super(message, cause);

}publicMyException(Throwable cause) {super(cause);

}

}

继承自Exception的自定义异常类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@Testpublic void getMessage() throwsException {try{int a= 10/0;

}catch(Exception e) {throw new MyException("10不能除以0");

}

}

继承自Exception的异常类的测试

144f8011aca6c946c188f45519237f24.png

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

三、throw和throws的区别

主要区别有以下三点:

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值