• 2020.10.31


    一、今日学习内容:

    今天主要学习的还是有关异常处理的部分知识:

    1、异常的多态特性:

    (1)可以有多个catch语句块,每个代码块捕获一种异常。在某个try块后有两个不同的catch 块捕获两个相同类型的异常是语法错误。

    (2)使用catch语句,只能捕获Exception类及其子类的对象。因此,一个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。

    (3)将catch(Exception e)放在别的catch块前面会使这些catch块都不执行,因此Java不会编译这个程序。

    2、“finally”的功用

    资源泄露:当一个资源不再被某应用程序使用,但此程序并未向系统声明不再使用此资源时发生这种情况

    finally语句块主要用于解决资源泄露问题,它位于catch语句块之后,JVM保证它们一定执行。

    注意:finally语句块中也可能发生异常,如果这种情况发生,先前的异常被放弃。

    3、Java 7 特性:自动释放的资源-1

    finallytry-with-resources

    try ( ClassName  theObject = new ClassName() )
    {
            // use theObject here
    }
    catch ( Exception e )
    {
        // catch exceptions that occur while using the resource
    }

    要求ClassName指定的类型必须实现AutoCloseable接口

    4、Java 7 特性:自动释放的资源-2

    AutoCloseable接口的定义如下:

    public interface AutoCloseable {
            void close() throws Exception;
    }

    当程序执行流程离开try-with-resources结构时,AutoCloseable接口所定义的close()方法会被自动调用,因此,无需在finally子句中显式调用close()方法。

    5、如何跟踪异常的传播路径?

    (1)当程序中出现异常时,JVM会依据方法调用顺序依次查找有关的错误处理程序。

    (2)可使用printStackTrace 和 getMessage方法了解异常发生的情况:

        printStackTrace:打印方法调用堆栈。

        每个Throwable类的对象都有一个getMessage方法,它返回一个字串,这个字串是在Exception构造函数中传入的,通常让这一字串包含特定异常的相关信息。

    6、throws语句:

    throws语句表明某方法中可能出现某种(或多种)异常,但它自己不能处理这些异常,而需要由调用者来处理。

    当一个方法包含throws子句时,需要在调用此方法的代码中使用try/catch/finally进行捕获,或者是重新对其进行声明,否则编译时报错。

    7、受控与不受控的异常:

    throws语句中声明的异常称为受控(checked)的异常,通常直接派生自Exception类。

    RuntimeException(其基类为Exception) 和Error(基类为Throwable)称为非受控的异常。这种异常不用在throws语句中声明。

    CheckedExceptionDemo.java示例展示了上述两种异常的特性。

    8、子类抛出受控异常的限制

    一个子类的throws子句抛出的异常,不能是其基类同名方法抛出的异常对象的父类。

    二、遇到的问题:

       没有遇到什么问题。

    三、明日学习计划:

       继续学习四则运算的相关代码修改。

  • 相关阅读:
    ubuntu下配置django+apache+mysql+mod_python+Python
    Makefile 学习
    一个查重算法的多种实现思路
    MongoDB基础
    基于ASP.NET MVC 3的企业应用项目总结
    CruiseControl.Net持续集成平台搭建总结
    Cnblogs Start
    JavaScript中的this
    Entity Framework 4.0 的一个bug :DefaultValue问题
    .Net平台下的B/S开发框架
  • 原文地址:https://www.cnblogs.com/marr/p/14175250.html
Copyright © 2020-2023  润新知