zoukankan      html  css  js  c++  java
  • JAVA异常机制简述

    1.类的继承结构

    在JAVA所有的异常对象都是Throwable类的一个子类的实例

    Exception包含两个分支,由于程序错误导致的异常属于RuntimeException,比如数组下标越界,空指针等。非程序本身问题的异常属于其他异常,譬如IO引起的异常。

    派生自Error类或RuntimeException类的所有异常都属于为检查异常,而其他所有的异常都属于已检查异常,我们只需要为已经常异常指定异常处理器即可,换句话说,原则上,我们只需要为已检查异常编写catch语句。

    2.方法异常的声明

    方法在其首部应该声明所有可能抛出的异常

    String readData(Scanner in)throw EOFException
    {
         //...
    }

    3.异常的抛出

    String readData(Scanner in)throw EOFException
    {
         while(){
               if(){
                     throw new EOFException();
            }
        }
    }    

    4.方法的捕获

    如果A方法调用了声明了抛出异常的B方法,那么在A方法中要么处理这个异常,要么继续将这个异常抛出。

    try{
        //...
    }
    catch(FileNotFoundException e)
    {
        //...
    }
    catch(IOException e){
       //...
    }
    finally
    {
        file.close();
    }

    5.finally子句已经带资源的try语句

    在上面代码中,我们使用了finally子句来进行文件关闭的操作,这在实际开发过程中是比较常见的需求,由于无论try语句块中是否出现异常,finally子句中的语句都会被执行,所以在finally子句进行文件关闭、流关闭以及数据库关闭等操作是一个比较好的选择,避免了try语句块内外编写重复的代码。

    此外,另一种较好的选择是使用带资源的try语句,由于带资源的try会在退出(无论正常退出还是异常发生)时,自动调用res.close(),所以我们在不编写finally语句的情况下依然可以进行文件关闭等操作。

    try(Scanner in = new Scanner(new FileInputStrem("/usr/tmp/test"))){
          while(in.hasNext())
                  System.out.println(in.next());
    }
  • 相关阅读:
    jquery属性
    jquery选择器
    Django的模型
    win7安装RabbitMQ
    阿里云RDS备份的tar格式包恢复到本地自建数据库
    正确使用 Volatile 变量
    深入分析Volatile的实现原理
    volatile和synchronized的区别
    全面理解Java内存模型
    深入理解Feign之源码解析
  • 原文地址:https://www.cnblogs.com/shuaiwang/p/4565439.html
Copyright © 2011-2022 走看看