zoukankan      html  css  js  c++  java
  • Java编程思想笔记(通过异常处理错误)

         1.概念

         2.基本异常:异常情形是指阻止当前方法或作用域继续执行的问题。

         2(1).异常参数:所有标准异常类都有两个构造器:一个是默认构造器;另一个是接受字符串作为参数,以便能把相关信息放入异常对象的构造器。

         3.捕获异常

         3(1).try块:如果在方法内部抛出了异常,这个方法将在抛出异常的过程中结束。要是不希望方法就此结束,可以在方法内设置一个特殊的块来捕获异常。因为在这个块里“尝试”各种(可能产生异常的)方法调用,所以称为try块

         3(2).异常处理程序:异常处理理论上有两种基本模型。终止模型:将假设错误非常关键,以至于程序无法返回到异常发生的地方继续执行。恢复模型:异常处理程序的工作是修正错误,然后重新尝试调用出问题的方法(那么在遇见错误时就不能抛出异常,而是调用方法来修正该错误。或者,把try块放在while循环里,这样就不断地进入try块,直到得到满意的结果。)

         4.创建自定义异常:要自定义异常类,必须从已有的异常类继承,最好是选择意思相近的异常类继承。建立新的异常类型最简单的方法就是让编译器为你产生默认构造器。

         4(1).异常与记录日志:静态的Logger.getLogger()方法创建了一个String参数相关联的Logger对象(通常与错误相关的包名和类名),这个Logger对象会将其输出发送到System.err。向Logger写入的最简单方式就是直接调用与日志记录消息的级别相关联的方法,这里使用的是severe()。为了产生日志记录消息,我们欲获取异常抛出处的栈轨迹,但是printStackTrace()不会默认地产生字符串。为了获取字符串,我们需要使用重载printStackTrace()方法,它接受一个java.io.PrintWriter对象作为参数。

         5.异常说明:如果方法里的代码产生了异常却没有进行处理,编译器会发现这个问题并提醒你:要么处理这个异常,要么就在异常说明中表明此方法将产生异常。 异常说明使用了附加的关键字throws,后面接一个所有潜在异常类型的列表。

         6.捕获所有异常:只写一个异常处理程序来捕获所有类型的异常。通过捕获异常类型的基类Exception,就可以做到这一点 catch(Exception e) { System.out.println("Caught an exception");}

         6(1).栈轨迹

         6(2)重新抛出异常: catch(Exception e) {{ System.out.println("Caught an exception"); throw e;}

         6(3).异常链:常常会想要在捕获一个异常后抛出另一个异常,并且希望把原始异常的信息保存下来,这被称为异常链。

         7.Java标准异常:

         7(1).特例:RuntimeException:如果对null引用进行调用,Java会自动抛出NullPointerException异常(这不必由你亲自来做,它属于Java的标准运行时检测的一部分)。

         8.使用finally进行清理:无论try块中的异常是否抛出,它们都能得到执行。这通常适用于内存回收之外的情况。

         8(1).finally用来做什么:当要把除内存之外的资源恢复到它们的初始化状态时,就要用到finally子句。这种需要清理的资源包括:已经打开的文件或网络连接,在屏幕上画的图形,甚至可以是外部世界的某个开关。

         8(2).在return中使用finally

         8(3).缺憾:异常丢失

         9.异常的限制:当覆盖方法的时候,只能抛出在基类方法的异常说明里列出的那些异常。

         10.构造器:对于在构造阶段可能会抛出异常,并且要求清理的类,最安全的使用方法是使用嵌套的try子句。

          11.异常匹配

          12.其他可选方式

          12(1).历史

          12(2).观点

          12(3).把异常传递给控制台

          12(4).把“被检查的异常”转换为“不检查的异常”

          13.异常使用指南

  • 相关阅读:
    react路由组件&&非路由组件
    react函数式组件(非路由组件)实现路由跳转
    react使用antd组件递归实现左侧菜单导航树
    【LeetCode】65. Valid Number
    【LeetCode】66. Plus One (2 solutions)
    【LeetCode】68. Text Justification
    【LeetCode】69. Sqrt(x) (2 solutions)
    【LeetCode】72. Edit Distance
    【LeetCode】73. Set Matrix Zeroes (2 solutions)
    【LeetCode】76. Minimum Window Substring
  • 原文地址:https://www.cnblogs.com/Zara/p/5768731.html
Copyright © 2011-2022 走看看