如果需要在程序中自行抛出异常,应使用throw语句,throw语句可以单独使用,throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例。
在Java内置的异常类中可以描述编程时出现的大部分异常,所以用户只需继承Exception类即可自定义异常类。步骤如下:
- 创建自定义异常类
- 在方法中用throw抛出异常对象
- 处理异常
1.在抛出异常的方法内处理异常:使用try-catch
2.用throw关键字指明抛出的异常
实现
public class Test
{
public static void main(String[] args){
try{
test01(-3);
}catch (Exception e){
System.out.println(e.getMessage());
}
}
public static void test01(int a) throws Exception{
if(a<0){
throw new Exception("小于0,报错!");
}
}
}
当程序运行到test01(-3)
时,调用方法,运行throw new Exception("小于0,报错!")
。此时抛出异常。
在catch处System.out.println(e.getMessage());
输出异常(“小于0,报错!”)的性质。
输出如图:
自定义异常
自定义异常
class MyException extends Exception { //自定义异常类
String message;
public MyException(String ErrorMessagr) {//成员方法
message = ErrorMessagr;
}
public String getMessage() { // 重写getMessage()方法
return message;
}
}
public class Captor {
static int test02(int x) throws MyException {
if (x < 0) {
throw new MyException("不能是负数");
}
return x;
}
public static void main(String args[]) {
try {
int result = test02(-1);
}
catch (MyException e) {
System.out.println(e.getMessage());//输出异常信息
}
catch (Exception e) {
System.out.println("程序发生了其他的异常");
}
}
}
调用test02后,运行至throw new MyException("不能是负数");
转跳至public MyException(String ErrorMessagr) {//成员方法 message = ErrorMessagr; }
使=message"不能是负数"。之后在catch处处理异常System.out.println(e.getMessage());//输出异常信息
输出:
附上:
非自定义异常类
public class Captor {
static int test02(int x) throws Exception {
if (x < 0) {
throw new Exception("不能是负数");
}
return x;
}
public static void main(String args[]) {
try {
int result = test02(-1);
}
catch (Exception e) {
System.out.println(e.getMessage());//输出异常信息
}
}
}
输出相同