Bigdata Development Java_Study_08(Exception)

来源:互联网 发布:域名备案年审 编辑:程序博客网 时间:2024/06/10 14:20

Exception

/*导致程序中断的错误。Error:JVM出错,内存不足等。        不能处理,程序无法恢复。Exception:代码逻辑错误,程序不严谨。        可以处理,程序还能继续运行。运行时异常(unchecked):编译器不要求我们处理的错误。NullPointerException,ArrayIndexOutOfBoundsException都是继承自RuntimeException异常(checked):编译器要求我们必须处理的错误。继承自Exception处理异常的两种方式1。使用try-catch-finally语法处理。            这是自己处理的方式。2。使用throw和throws关键字交给方法的调用者进行处理。            交给别人处理。抛出(throw)异常,当我们程序运行产生异常,会自动生成异常对象,提交给JVM。捕获(catch)异常,JVM收到异常对象后,自动寻找能够处理这个异常的代码并把异常对象交给他。*/// 自定义异常,继承自 Exception// 并不是所有会导致程序崩溃的错误叫做异常,// 所有不符合预期效果的现象都可以叫做异常public class NumberException extends Exception {    public NumberException() {        super();        // TODO Auto-generated constructor stub    }    public NumberException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {        super(message, cause, enableSuppression, writableStackTrace);        // TODO Auto-generated constructor stub    }    public NumberException(String message, Throwable cause) {        super(message, cause);        // TODO Auto-generated constructor stub    }    public NumberException(String message) {        super(message);        // TODO Auto-generated constructor stub    }    public NumberException(Throwable cause) {        super(cause);        // TODO Auto-generated constructor stub    }}    public void tryCatchTest(int a, int b) {        // 使用 try-catch 捕获和处理异常        try {            // 可能产生异常的代码            // 从上往下执行,直到产生异常,后续的代码不在执行            System.out.println("准备开始除法计算");            int c = a / b;            System.out.println("除法计算正常执行");            String text = null;            // 如果产生多个异常,就需要多个 catch 分别处理            int lenght = text.length();         }catch (ArithmeticException e) {            // try 中代码产生异常以后,对异常进行处理            // e 就是捕获到的异常对象            // 只要捕获到异常,程序就不会终止,继续向下执行            // try 中没有产生异常,catch 中的代码就不会执行            System.out.println("程序产生异常了");            // 通常不适用 Exception,而是使用具体的异常类型,让异常处理更具有针对性            // 获取异常的描述信息 e.getMessage()            System.out.println(e.getMessage());            // 打印异常产生的堆栈信息,方法调用过程,错误代码位置            e.printStackTrace();        }catch (NullPointerException e) {            // catch 可以有多个,每个 catch 只处理一种异常            System.out.println("产生了空指针异常");        }finally {            // finally 是可选的,可写可不写            // 无论是 try 还是 catch 执行完后都会执行这里的代码            System.out.println("finally 执行了");        }    }    // 声明方法的时候,可以通过 throws 说明当前方法可能产生的异常    // 方法抛出异常,方法内部产生的异常不处理,抛调用方法谁来处理    public void throwTest() throws ArithmeticException {        int a = 10;        int b = 0;        int c = a / b;    }    public void addNumber(int a) throws NumberException {        // 输入的数字小于 10        if (a > 10) {            // 运行时异常由系统抛出            // 自定义异常都是继承在 Exception 的,            // 需要使用 throw 关键字手动抛出            // 告诉方法调用者,方法执行的过程各种产生错误,改如何处理            throw new NumberException("你输入的数字大于 10");        }        int b = a * 10;    }
原创粉丝点击