zoukankan      html  css  js  c++  java
  • 201671010116. 2016-2017-8《Java程序设计》第9周学习总结

    本周学习了新知识,主要内容有异常,断言和日志。具体学到的知识大致有以下几个方面:

    1.异常:

    java异常处理可以通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统生成的异常在Java运行时自动抛出。也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。finally语句块会在方法执行return之前执行,一般结构如下:

    try{
      程序代码
     }catch(异常类型1 异常的变量名1){
      程序代码
     }catch(异常类型2 异常的变量名2){
      程序代码
     }finally{
      程序代码
     }

    catch语句可以有多个,用来匹配多个异常,匹配上多个中一个后,执行catch语句块时候仅仅执行匹配上的异常。

    异常类的层次:

    java.lang.Object
      java.lang.Throwable
          java.lang.Exception
           java.lang.RuntimeException
       java.lang.Error
           java.lang.ThreadDeath

    (1)Throwable:Throwable 类是 Java 语言中所有错误或异常的超类

    (2)Exception:
            Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件,
    表示程序本身可以处理的异常。

    (3)Error:Error 是 Throwable 的子类,表示仅靠程序本身无法恢复的严重错误,用于指示合理的应用程序不应该试图捕获的严重问题。

    (4)RuntimeException
            RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过,
    这种异常可以通过改进代码实现来避免

    异常处理的语法规则:
           第一、try语句不能单独存在,可以和catch、finally组成 try...catch...finally、try...catch、try...finally三种结构,catch语句可以有一个或多个,finally语句最多一个,try、catch、finally这三个关键字均不能单独使用。

            第二、try、catch、finally三个代码块中变量的作用域分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。
            第三、多个catch块时候,Java虚拟机会匹配其中一个异常类或其子类,就执行这个catch块,而不会再执行别的catch块。
            第四、throw语句后不允许有紧跟其他语句,因为这些没有机会执行。
           第五、如果一个方法调用了另外一个声明抛出异常的方法,那么这个方法要么处理异常,要么声明抛出。
    2.断言:
    assert。在程序开发过程中使用它创建一个断言(assertion),它的语法形式有如下所示的两种形式:
    (1)assert condition;
        这里condition是一个必须为真(true)的表达式。如果表达式的结果为true,那么断言为真,并且无任何行动。如果表达式为false,则断言失败,则会抛出一个AssertionError对象。这个AssertionError继承于Error对象,
    而Error继承于Throwable,Error是和Exception并列的一个错误对象,通常用于表达系统级运行错误。
    (2)asser condition:expr;
        这里condition是和上面一样的,这个冒号后跟的是一个表达式,通常用于断言失败后的提示信息,说白了,它是一个传到AssertionError构造函数的值,如果断言失败,该值被转化为它对应的字符串,并显示出来。
    当执行代码时,使用-ea选项使断言有效,也可以使用-da选项使断言无效(默认为无效)。同样,也可以通过在-ea或-da后面指定包名来使一个包的断言有效或无效。例如,要使一个com.test包中的断言无效,可以使用:-da:com.test
    3.日志:

    Java中关于日志系统的API,在 java.util.logging 包中,在这个包中,Logger类很重要。

    Logger类是用来记录 某个级别的日志消息:

      级别共分为以下几类,从上倒下,级别依次下降:

        SEVERE(严重)------级别最高

        WARNING(警告)

        INFO

        CONFIG

        FINE

        FINER

        FINEST------最低值

    Handler类(抽象类):主要用于转发日志消息

      Hanlder类下有2个子类:MemoryHandler、StreamHandler。

      StreamHandler下有3个子类:ConsoleHandler(将日志消息打印到控制台)、FileHandler(将日志消息输出到文件)、SocketHandler(将日志发送到网络中的某个主机)。

    Formatter类(抽象类):主要用于格式化日志记录消息。

      有2个子类:SimpleFormatter(纯文本形式), XmlFormatter(XML形式)

    在本周的学习过程中,通过对实验的编写对异常处理和断言掌握的比较好,但对日志的部分比较陌生,很多代码不理解,而且网络对相关部分的解释也比较少。

  • 相关阅读:
    解决nodejs使用yarn安装vue-cli提示'vue' 不是内部或外部命令
    转载——java synchronized详解
    转载——Java中this关键字和super关键字的使用
    转载—— JUnit单元测试教程(翻译自Java Code Geeks)
    Usage and Idioms——Use with Maven
    转载——JUnit 5 新特性
    Usage and Idioms——Categories
    转载——单元测试利器 JUnit 4
    Usage and Idioms——Test Fixtures
    深入JUnit源码之Rule
  • 原文地址:https://www.cnblogs.com/-lina/p/7711531.html
Copyright © 2011-2022 走看看