zoukankan      html  css  js  c++  java
  • 第七章 异常、断言和日志

    1.异常:

    •向用户通告错误;

    •保存所有的工作结果;

    •允许用户以妥善的形式退出程序。 

    Java中所有异常都是派生于类Throwable的一个实例:

    各种异常分类的标准:

    RuntimeException相当于逻辑错误

    关于受查异常和非受查异常:

    方法后的声明:

    如果在子类中覆盖了超类的一个方法, 子类方法中声明的受查异常不能比超类方 法中声明的异常更通用(也就是说, 子类方法中可以抛出更特定的异常, 或者根本不抛 出任何异常)。 特别需要说明的是, 如果超类方法没有抛出任何受查异常, 子类也不能抛 出任何受查异常。

    而在 Java 中, 没有 throws 说明符的方法将不能抛出任何受查异常。

    捕获异常

    合并catch语句:

    将原始异常设置为新异常的原因:

    finally多用于资源管理,确保无论在任何情况下,代码都能得到执行

    try 语句可以只有 finally 子句, 而没有 catch 子句。 

    异常如果没有catch住,会继续抛出。与finally无关

    关于解耦:

    当finally语句包含return的时候的执行效果:

    带资源的try语句

    不管是正常退出还是存在异常,都会调用close方法

    也可以指定多个资源:

    带资源的 try 语句自身也可以有 catch 子句和一个 finally 子句。

    这些子句会在 关闭资源之后执行。 不过在实际中, 一个 try语句中加入这么多内容可能不是一个好 主 意。 

    分析堆栈轨迹元素

    全部打印出来:
     

    分析这个数组:

    获得所有线程的运行轨迹:

    使用异常机制的技巧:

    不能用异常处理代替测试

    不要过分细化异常

    早抛出,晚捕获

     2.断言

    使用断言:

    断言机制允许在测试期间向代码中插入一些检査语句。当代码发布时, 这些插人的检测 语句将会被自动地移走。 

    assert 这个关键字有两种形式: 

    assert 条件;

    assert 条件: 表达式;

    这两种形式都会对条件进行检测, 如果结果为 false, 则抛出一个 AssertionError 异常。 在第二种形式中, 表达式将被传人 AssertionError 的构造器, 并转换成一个消息字符串。 

    启用和禁用断言:

     

    断言的应用场景:

  • 相关阅读:
    学习Spring,看这几本书就够了
    这份书单会告诉你,Java网络编程其实很重要
    心雨(三)【英语】
    成功安装SQL Server实例后 无法找到SQL Server Configuration Manager工具的解决方案
    Windows Cluster失败后,AlwaysOn在残存Server节点上快速恢复DB的详细步骤
    SQL Server 数据库本地备份文件通过OSS工具上阿里云(恢复还原数据库)
    透过systemctl管理mysqld服务
    MongoDB 读偏好设置中增加最大有效延迟时间的参数
    MongoDB 副本集丢失数据的测试
    MySQL 时间类型 DATE、DATETIME和TIMESTAMP
  • 原文地址:https://www.cnblogs.com/yangzhixue/p/14322605.html
Copyright © 2011-2022 走看看