Java基础之异常处理机制

作者: 坚持也是一种成功 | 来源:发表于2016-03-03 13:20 被阅读549次

    一、异常处理机制
    1、异常的祖先是Throwable,有如下两个子类:
    a、Error:表示错误,错误产生后程序员不能通过代码的方式纠正,只能事先避免,好比生命已经停止。
    b、Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的
    2、 Throwable中的常用方法
    public void printStackTrace();打印异常的详细信息
    public String getMessage();获取发生异常的原因
    二、异常分类:
    1):编译时期异常:Checked:Exception类和他的子类,除了运行时期异常其他的就是编译时期异常.
    2):运行时期异常:Runtime: RuntimeExeption类和RuntimeException的子类.
    编译时异常: 要求我们必须处理异常(throws/try-catch),不处理,则编译不能通过.
    运行时异常: 可处理,可不处理.

    处理异常的方法:
    1、使用try-catch
    在开发过程中建议使用这个异常处理机制,进行专业处理。Try必须与catch或finally同在,不能单独使用,二者必须出现一个。finally块中的语句一定会执行,无论是否存在错误。除非在try或catch语句中出现了退出JVM的语句,不执行。
    finally与return先后执行问题:

       public class FinallyDemo {
          public static void main(String[] args) {
        System.out.println(show());
       }
    
    /* 判断return与finally哪个先执行:
     * 1、直接在try中返回一个变量
     * 2、在finally中让这个变量自增,打印出结果
     * 如果是finally先执行的那么finally执行完之后变量的结果就
     * 会自行的加一,如果是return先执行那么就会先返回在进行自增
     *  */
    public static int show() {
        System.out.println("...start...");
        int mun = 1;
        try {
            return mun;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
                        //一定会执行的代码快,除非在该代码执行之前          
                        //就执行了system.exit(0);就不会执行该代码块
                mun++;
            System.out.println(mun);
        }
        System.out.println("...end.....");
        mun++;
        return mun;
        }
    }
    

    2、抛出异常
    抛出异常的方式有两种:
    1):在方法的内部使用throw,抛出一个异常对象.如果抛出的异常是一个编译时期异常,就必须在方法后面声明抛出的异常类型,如果是运行时期的异常就不需要声明异常类型
    如下面的程序,可能出现的编译时期异常有FileNotFoundException,与ArithmeticExcepting.就必须在方法后面声明,否则编译出错

    Paste_Image.png

    如果出现的异常为编译时期异常时,我们还可以将其转换成运行时期异常就不用在方法后面声明了。例如:

    Paste_Image.png

    JDK1.7中的throw的新特性:如果throw抛出的真实异常是编译时期异常也必须在方法后面声明异常类型

    Paste_Image.png

    2):在方法上使用throws声明可能抛出的异常类型.
    这个方法是将异常交给调用者,此异常为非运行时期异常。一旦使用throws,当前方法就不再过问该异常,交给调用者处理。

    相关文章

      网友评论

        本文标题:Java基础之异常处理机制

        本文链接:https://www.haomeiwen.com/subject/ahbgkttx.html