- package exception;
- /*
- * 因为项目中会出现特有的问题,而这些问题并没有被java所描述并封装对象。
- * 所以对这些特有问题可以按照java的对问题封装思想,将特有的问题,进行自定义的异常封装。
- *
- * 自定义异常:
- * 假定需求:在本程序中,对于除数是负数,也视为是错误的是无法进行运算的。
- * 那么就要对这个问题进行自定义的描述。
- * 自定义异常java没有描述不能自动抛出,只能手动抛出。
- *
- * 当在函数内部出现throw抛出异常对象,那么必须要给出对应的处理动作。
- * --要么在内部try catch处理
- * --要么在函数上声明让调用者处理
- *
- * 一般情况,在函数内出现异常,函数上需要声明。
- *
- * 发现打印的结果中只有异常的名称,却没有异常的信息:因为自定义的异常并没有定义信息。
- * 如何定义异常信息呢?
- * 因为父类中已经把异常信息的操作都完成了。所以子类只要在构造时,通过super语句将异常信息传递给父类
- * 那么就可以直接通过getMessage方法获取自定义的异常信息了。
- *
- * 自定义异常:
- * 必须是自定义继承Exception
- *
- * 继承Exception原因:
- * 异常体系有一个特点:因为异常类和异常对象都被抛出。
- * 他们都具备可抛性。这个可抛性是Throwable这个体系中独有的特点。
- * 只有这个体系中的类和对象才可以被throws和throw操作。
- *
- * throws和throw的区别:
- * --throws使用在函数上。
- * --throw使用在函数内。
- *
- * throws后面跟的异常类。可以跟多个。用逗号隔开。
- * throw后面跟的是异常对象。
- */
- @SuppressWarnings("serial")
- class FuShuException extends Exception {
- @SuppressWarnings("unused")
- private String msg;
- private int value;
- // FuShuException(String msg) {
- // this.msg = msg;
- // }
- //
- // public String getMessage() {
- // return msg;
- // }
- FuShuException(String msg, int value) {
- super(msg);
- this.value = value;
- }
- public int getvalue() {
- return value;
- }
- }
- class DivDemo {
- int div(int a, int b) throws FuShuException {
- if (b < 0)
- throw new FuShuException("出现了除数是负数的情况 / by FuShu", b);// 手动通过throw关键字抛出一个自定义异常
- return a / b;
- }
- }
- public class SelfDefineException {
- public static void main(String[] args) {
- DivDemo dd = new DivDemo();
- try {
- int x = dd.div(4, -1);
- System.out.println("x=" + x);
- } catch (FuShuException e) {
- System.out.println(e.toString());
- // System.out.println("除以负数了");
- System.out.println("出现异常的数是: " + e.getvalue());
- }
- System.out.println("over");
- }
- }
复制代码 |