案例一:
package com.esandinfo; /**
* 自定义一个Exception类
*/
class MyCustomException extends RuntimeException { private String name; MyCustomException(String name, int falg) {
this(name);
} MyCustomException(String name) {
this.name = name;
} public String getName() {return name;}
} /**
* 我现在去使用 刚刚自定义的Exception类
*/
class MyUtils { public void doAction(String name) throws MyCustomException { // 需要在这里注意:,异常的抛出,好让main方法处理
if ("史珍香".equals(name)) {
throw new MyCustomException("兄弟,史珍香他报错了,你去处理异常吧!!!!", 0001);
} else if ("李狗蛋".equals(name)) {
throw new MyCustomException("兄弟,李狗蛋他奔溃了,你去处理异常吧!!!!", 0002);
} else {
throw new MyCustomException("未知异常,你去处理异常吧!!!!", -1000);
}
// .... 以后还需要定义异常,可以往下面加
} } public class MyTest { public static void main(String[] args) {
try {
new MyUtils().doAction("史珍香");
new MyUtils().doAction("李狗蛋"); // 不会执行了,因为第一个方法已经被捕获了,进入了 catch
new MyUtils().doAction(null);
} catch (MyCustomException e) {
// 打印捕获到的异常
System.out.println(e.getName());
}
} }
执行结果:
案例二:
package com.esandinfo; /**
* 自定义一个Exception类,专门计算 【加法】 以后你可以增加为: 加减乘除
*/
class MyException extends RuntimeException { private int result; // 这是计算后的结果值 MyException(int value1, int value2) {
result = value1 + value2;
} public int getResult() {return this.result;}
} /**
* 我现在去使用 刚刚自定义的MyException类
*/
class Utils { public void doAction(int value1, int value2) throws MyException { // 需要在这里注意:,异常的抛出,好让main方法处理
throw new MyException(value1, value2);
// .... 以后还需要定义异常,可以往下面加
} } public class MyCount {
public static void main(String[] args) {
try {
// 我现在调用 上面的Utils中的方法,就是为了捕获 Utils-->doAction方法丢出的异常
new Utils().doAction(1000, 1000);
} catch (MyException e) {
System.out.println(e.getResult()); // 打印得到的 Utils-->doAction 方法丢出的异常
}
}
}
执行结果: