自定义异常类的主要作用是区分异常发生的位置,当用户遇到异常时,根据异常名就可以知道哪里有异常,根据异常提示信息进行修改。
一、创建自定义异常类
- 创建一个自定义异常类继承于 Throwable 或其子类;
- 添加构造方法
package com.example.study.exception;
/**
* 自定义异常: 自定义异常类的主要作用是区分异常发生的位置,当用户遇到异常时,根据异常名就可以知道哪里有异常,根据异常提示信息进行修改。
*
* @author 李关钦
* @date 2017年6月13日
*/
public class MyException extends Exception {
private static final long serialVersionUID = 1L;
public MyException() {
super();
}
public MyException(String message) {
super(message);
}
}
二、在方法中通过 throw 关键字抛出异常对象
throw new MyException("方法中抛出自定义异常");
三、使用 try-catch 语句捕获并处理异常
/**
* 使用 try-catch 语句捕获并处理异常
*/
public void handleException() {
try {
throw new MyException("handleException 方法中抛出自定义异常");
} catch (MyException e) {
System.out.println("handleException 方法中捕抓到异常,异常信息为:" + e.getMessage());
}
}
四、使用 throws 关键字抛出给方法的调用者处理该异常
/**
* 使用 throws 关键字抛出给方法的调用者处理该异常
*
* @throws MyException
*/
public void throwException() throws MyException {
throw new MyException("throwException 方法中抛出自定义异常");
}
public static void main(String[] args) {
ExceptionTest test = new ExceptionTest();
test.handleException();
try {
test.throwException();
} catch (MyException e) {
System.out.println("main 方法中捕抓到异常,异常信息为:" + e.getMessage());
}
}
注:完整的测试类和测试结果
package com.example.study.exception;
/**
* 自定义异常测试
*
* @author 李关钦
* @date 2017年6月13日
*/
public class ExceptionTest {
/**
* 在当前方法中使用 try-catch 语句捕获并处理异常
*/
public void handleException() {
try {
throw new MyException("handleException 方法中抛出自定义异常");
} catch (MyException e) {
System.out.println("handleException 方法中捕抓到异常,异常信息为:" + e.getMessage());
}
}
/**
* 使用 throws 关键字抛出给调用者处理该异常
*
* @throws MyException
*/
public void throwException() throws MyException {
throw new MyException("throwException 方法中抛出自定义异常");
}
public static void main(String[] args) {
ExceptionTest test = new ExceptionTest();
test.handleException();
try {
test.throwException();
} catch (MyException e) {
System.out.println("main 方法中捕抓到异常,异常信息为:" + e.getMessage());
}
}
}