zoukankan      html  css  js  c++  java
  • 第12章_异常

    1:发现错误的理想时机是编译阶段无法再编译阶段发现的可以使用异常机制在运行阶段处理
    2:“异常情形”是指你无法在当前的情形下处理改问题,不得不结束当前操作的情况。
    3:抛出异常后:
    3.1:java使用new在堆上创建异常对象。
    3.2:终止当前程序执行的路径,抛出异常对象的引用。
    3.3:此时异常处理程序接管运行(终止执行或者另辟蹊径)。
    4:创建异常对象和创建普通对象一样也是使用new关键字,也需要调用构造方法并传递参数(有参方法可以接受一个String),创建的对象也放在堆内存中。
    5:“抛出异常”处理异常可以通过throw关键字,它会将异常对象抛出到外层。可以使用Throw关键字的异常的根类是Throwable类。
    6:“监控区域”可能产生异常的区域,后面跟着处理方法。
    7:“捕获异常”如果不希望因为异常的发生而使程序中断,可以使用try将异常捕获。
    8:异常处理论有两种模式:
    8.1:终止模式(java和C#支持)一旦捕获无法回到之前的状态。
    8.2:恢复模式()异常的作用是修正错误,然后重新调用出错的方法。
    9:“异常说明java强制要求使用Throws关键字指出方法中可能出现的异常。例如:void f() throws AException,BException()
    如果代码中产生了异常,编译器会提醒你:1:处理这个异常。2:在异常说明中申明该方法将产生异常。
    10:“栈轨迹”使用printStackTrace()方法返回由栈轨迹组成的数组,栈顶元素是最后调用的方法(异常抛出点)。
    11:“重新抛出异常”有时希望将刚刚捕获的异常抛出,尤其是使用Exception捕获时。例如:
    catch(Exception e){
    throw e;
    }
    12:Throwable用来表示可以作为异常抛出的类。Throwable可一分为两种类型:
    1:Error:表示编译时和系统的错误。比如OutOfMemoryError、ThreadDeath等。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。
    2:Exception:java类库、用户方法抛出的类型。这类异常是可处理的异常。分为运行时异常和非运行时异常两类。
    2.1:RuntimeException:这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,应该从逻辑的角度尽量避免。
    2.2:非RuntimeException:必须处理,否则编译不通过,如IOException、SQLException等。
    13:Exception:分为未检查异常(RuntimeException)和已检查异常(非RuntimeException)。
    未检查异常是因为程序员没有进行必需要的检查,因为疏忽和错误而引起的错误。例如:
    1.java.lang.NullPointerException;
    2.java.lang.ArithmaticException;
    3.java.lang.ArrayIndexoutofBoundsException
    14:RuntimeException:是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类,运行时异常是java标准运行时检查的一部分,由java虚拟机会自动抛出,所以不必在异常说明中列出。
    15:RuntimeException可以理解为:“编程错误”,编程过程中应该尽力预防此类异常的抛出。(这类异常的输出报告给了System.err)
    16:finally块可以实现无论在try中运行了什么,finally中的代码都会被执行,在java中由于有了垃圾自动回收,所以释放内存的操作不需要了。
    finally的用处是什么呢?当需要将内存之外的资源清理(网络连接、屏幕上的数据、外围设备的某个开关)。
    17:子类抛出的异常必须是父类申明的异常的子集
    18:注意构造器中的异常处理(没有仔细看,有时间再看看书)。
    19:处理异常的原则:
    1:只有知道如何处理是才捕获。
    2:解决问题:
    解决问题后你有两个选择:1:重新调用产生异常的方法。2:绕过问题的发生地继续执行。
    3:继续抛出:
    处理后事,然后向上层抛出异常。
    4:终止程序。
    20:五个关键字:try、catch、finally、throw、throws。
  • 相关阅读:
    matplotlib
    Scipy-数值计算库
    Django Templates
    Django Views: Dynamic Content
    Django Views and URLconfs
    Opencv读写文件
    Logistic回归
    demo
    【Python62--scrapy爬虫框架】
    【Python58--正则2】
  • 原文地址:https://www.cnblogs.com/Xmingzi/p/8607669.html
Copyright © 2011-2022 走看看