1. 抛出异常相关关键字
throw
关键字throws
关键字
1.1. throw 关键字
1.1.1. 执行语法
运用于方法内部, 抛出一个具体的异常对象. 然后终止方法, 类似
return
.throw new SomeException("Reason of Exception");
这个抛出的异常可以在
catch
中截取并获取其中的信息.
1.1.2. 应用场景
一般来说, 当一个方法出现异常的时候, 此时用
return
难以定义返回的内容,
因此可用throw
返回一个异常对象, 在catch
代码块中继续向上抛出异常.
所以必须先在try
代码块中对该方法进行调用, 才能catch
到异常.return
是返回一个值,throw
是返回一个错误, 返回给方法的调用者.
1.2. throws 关键字
运用于方法声明, 用于表示当前方法不处理异常, 而是提醒方法调用者来处理异常.
当抛出受检验异常
java.lang.Exception
的时候, 如果该方法不能自行处理,
则需要将该异常通过throws
向上抛出给调用者处理.//因为除数为0这种异常并非编码人员导致 //是使用该方法的人所导致, 因此不需要编码人员处理 public int divide(int num1, int num2) throws Exception{ if(num2 == 0){ throw new Exception("除数不能为零!"); } //TODO... }
如果每个方法都放弃处理异常, 都直接通过
throws
声明抛出,
最后异常会抛到main
方法, 若main
方法也不进行处理,
就会继续抛出给 JVM, JVM 底层的处理机制就是打印异常的跟踪栈信息.runtime
异常就是默认这种处理方式.throws
可以同时抛出多个异常, 只需要在声明的参数中添加即可.
2. 自定义异常类
2.1. 需求原因
JAVA 中存在不同的异常类, 分别表示某一种具体的异常情况,
但在开发过程中总会有异常情况是 SUN 没有定义的,
此时我们根据自己业务的异常情况来定义异常类.
2.2. 定义方式
在开发过程中根据业务的异常情况进行定义异常类,
有以下两种方式进行异常类定义:
自定义一个受检查的异常类:
自定义类, 并继承于java.lang.Exception
自定义一个运行时期的异常类:
自定义类, 并继承于java.lang.RuntimeException
2.3. 定义语法
public class LogicException extends Exception{
//这个UID直接通过系统提示产生
private static final long serialVersionUID = 1L;
//可以通过快捷键通过父类去定义构造方法
//以下列举3个常用的构造方法
public LogicException(){
//无参构造器
super();
}
/**
* @param message 表示当前异常的原因/信息
* @param cause 当前异常的根本原因
*/
public LogicException(String message){
//带一个参数的构造器
super(message);
}
public LogicException(String message, Throwable cause){
//带两个参数的构造器
super(message, cause);
}
}
2.4. 使用方式
try{
//TODO...
}catch(Exception e){
throw new LogicException("INFO of Exception:" + e.getMessage(), e);
}