案例一:
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 方法丢出的异常 } } }
执行结果: