Java自定义异常
在程序中使用自定义异常,大体可分为以下几个步骤
- 创建自定义异常类
class MyException extends Exception {// 创建一个自定义异常
public MyException(String x) {
super(x);// x为要输出的错误信息
}
}
需要继承Exception类即可自定义异常类,创建一个构造方法,其中x为输出的错误信息,可以直接定义一个变量,然后用throw关键字抛出,也可以直接在这里写错误信息。
class MyException extends Exception {// 创建一个自定义异常
public MyException(String x) {
super("分母不能为0");// x为要输出的错误信息
}
}
- 在方法中通过throw关键字抛出异常对象
public void div() throws MyException {// 定义方法,抛出异常
// 可能存在异常的代码块
Scanner sc = new Scanner(System.in);
int a = 0;// 分子
int b = 0;// 分母
System.out.println("请输入分子:");
a = sc.nextInt();
System.out.println("请输入分母:");
b = sc.nextInt();
if (b != 0) {// 对分母进行判断
System.out.println(a + "/" + b);
} else {
throw new MyException("分母不能为0");
}
}
可能存在异常的代码块的方法需要用throws(注意区分 throws 与 throw )抛出所定义的异常类。对数据进行判断,对可能会出现异常的情况,输出错误信息。
3.在主方法中调用div()方法,需要使用try-catch语句
public static void main(String[] args) {
Dome1 d = new Dome1();
try {
d.div();
} catch (MyException e) {
e.printStackTrace();
}
}
完整代码
package blog.c;
import java.util.Scanner;
public class Dome1 {
public void div() throws MyException {// 定义方法,抛出异常
// 可能存在异常的代码块
Scanner sc = new Scanner(System.in);
int a = 0;// 分子
int b = 0;// 分母
System.out.println("请输入分子:");
a = sc.nextInt();
System.out.println("请输入分母:");
b = sc.nextInt();
if (b != 0) {// 对分母进行判断
System.out.println(a + "/" + b);
} else {
throw new MyException("分母不能为0");
}
}
public static void main(String[] args) {
Dome1 d = new Dome1();
try {
d.div();
} catch (MyException e) {
e.printStackTrace();
}
}
}
class MyException extends Exception {// 创建一个自定义异常
public MyException(String x) {
super(x);// x为要输出的错误信息
}
}
当分母不为0时,正常输出这个分数
当输入的分母为0时,则提示异常信息