java异常

java中所有不正常的类都继承与Throwable类,其主要包括两大类,Error类和Exception类。

Error类中包括虚拟机错误和线程死锁,被称为程序终结者;

Exception类主要指编码、环境、用户操作输入除了问题,主要包括两大类:非检查异常(RuntimeException)和检查异常(CheckException)。

异常处理:

1.try-catch-finally

try:负责捕获异常,一旦try中发现异常,程序的控制权将被一觉给catch语句块中的异常处理程序。try语句不可以单独存在,必须与catch或者finally语句块同村;

catch:处理程序。如发出警告、提示、检查配置、网络连接、记录错误等,执行完catch块之后程序跳出catch语句块,继续执行后面的代码;

finally:最终执行的代码,在try、catch执行完result之后,在调用方法之前运行的,用于关闭和释放资源等。

try{ //一些会抛出的异常 }catch(Exception e){ //处理该异常的代码块 }finally{ //最终要执行的代码 }  终止执行,交由异常处理程序(抛出提醒或记录日志等),异常代码块外代码正常执行。 try会抛出很多种类型的异常,多个catch块捕获多钟错误。 多重异常处理代码块顺序问题:先子类再父类(顺序不对也会提醒错误),finally语句块处理最终将要执行的代码

 throws 放在参数之后,方法体之前,可以抛出多种异常,每个异常之间用逗号隔开;

throws写在方法体内,如果某个方法调用了抛出异常的方法,那么必须添加try catch语句去捕获这种异常或添加声明,将异常抛出给更上一层的调用者进行处理。

可以自定义异常,基于Exception类或其子类

异常链

(1):e.printStrackTrace();    作用是进行深层次的输出异常调用的流程 (2):RunTimeException();   这是运行时异常,是所有java虚拟机正常操作期间可以被抛出异常的父类! (3):newExc.initCause(e);   这是一种对异常的一种包装技巧。 initCause()的作用是保存原始的异常,当想要知道底层发生了什么异常的时候调用getCause()就能获得原始异常。

原文地址:https://www.cnblogs.com/jianhuangshu/p/6629486.html