day8-18(异常)

来源:互联网 发布:淘宝手机端怎么改好评 编辑:程序博客网 时间:2024/06/04 01:35

一.异常定义

用一个类来描述在代码编译或者运行期间可能遇到的各种错误.Throwable:所有异常或错误的父类    **Exception**:异常        1.在编写代码期间:由编译器提出,被称之为受查异常        2.在运行代码期间:编译器无法检查的,被称之为非受查异常.也称为运行时异常.不是所有的运行时异常都需要被处理    常见面试题:说出5种常见异常,以及原因和解决办法,如何回避?    答:      **Error**:错误,通常是jvm抛出的,一般情况不需要处理Error

二.异常应用

throw: 抛出一个异常.throws:声明此处可能会产生某种异常.(有可能会,不一定会.)
public class Demo {//throws Exception{类不能抛出任何异常    public static void main(String[] args) {        method();    }    /**     * throws只能用子啊方法声明处,用于声明此方法可能会产生某种异常     * throw   用在方法的真实的抛出一个异常对象     * @throws NullPointerException     */    private static void method() throws NullPointerException{//throws        throw new NullPointerException("空指针异常");    }}
try-catch-finally:     final,finally,finalize,说出三者区别     1.final 表示最终,可以修饰         1.1类(内部类可以,接口不可以)            不可以被继承         1.2方法不可以被重写             重写:存在继承关系中,子类更改父类的实现方式.改的是方法体.一个行为不同实现             重载:同一个类中,方法名相同,参数列表不同.不同特征不同的实现         1.3变量             引用:对象不能变             基本:值不能变    2.finally:        异常模块的最后一个模块,位于额外缓冲区,通常这里进行释放资源关闭资源        比如流 各种close    3.finalize        和GC有关(垃圾回器),不受人为调用,gc所处的线程是低级线程
public class Demo {//throws Exception{类不能抛出任何异常    public static void main(String[] args) {        //--try-catch 是异常处理语句块.        //try 中是可能产生异常的代码        //catch是对上面可能产生的异常进行捕捉,不产生则不执行catch        try {//try中如果有多条语句,其中任意一条语句产生异常.后续语句是不会执行的,直接catch捕获            System.out.println(1);            method();            System.out.println(2);        }catch (NullPointerException e){            e.printStackTrace();            return;        }catch (Exception e){            e.printStackTrace();        }finally{//异常捕捉的最后一个结构,代表最终还是会执行,用于关闭和释放各种资源,比如流,对象            /**             * 思考:finally一定会执行,如果在catch中存在return是什么情况             *      finally中有return会有什么执行情况             *             * 类似:如果一个方法有返回值,在方法的内部声明一个局部变量,在方法结束时把该变量返回.问题是:局部变量应该保存在栈中             * 当方法结束,方法栈要释放该方法锁占用的栈资源.那么局部变量保持在哪里,锁返回的值是哪里来.             */        }    }    /**     * throws只能用子啊方法声明处,用于声明此方法可能会产生某种异常     * throw   用在方法的真实的抛出一个异常对象     * @throws NullPointerException     */    private static void method() throws NullPointerException{//throws        throw new NullPointerException();    }}

三.异常处理原则

1、 能处理就早处理,抛出不去还不能处理的就想法消化掉或者转换为RuntimeException处理。因为对于一个应用系统来说,抛出大量异常是有问题的,应该从程序开发角度尽可能的控制异常发生的可能。2、 对于检查异常,如果不能行之有效的处理,还不如转换为RuntimeException抛出。这样也让上层的代码有选择的余地――可处理也可不处理。3、 对于一个应用系统来说,应该有自己的一套异常处理框架,这样当异常发生时,也能得到统一的处理风格,将优雅的异常信息反馈给用户。 
0 0
原创粉丝点击