java异常初理解

    xiaoxiao2025-05-02  13

    为什么用异常:异常处理使得程序可以处理非预期的情景,并且继续正常的处理。

     在这个世界不可能存在完美的东西,不管完美的思维有多么缜密,细心,我们都不可能考虑所有的因素,这就是所谓的智者千虑必有一失。同样的道理,计算机的世界也是不完美的,异常情况随时都会发生,我们所需要做的就是避免那些能够避免的异常,处理那些不能避免的异常。这里我将记录如何利用异常还程序一个“完美世界”。

    异常处理最根本的优势就是将检测错误(由被调用的方法完成)从处理错误(由调用方法完成)中分离出来。(也就是没有那么多if语句了)

    异常的处理三种操作:①声明异常(throws) ②抛出异常(throw) ③捕获异常(try-catch)

    以调用method()方法为例

    public class ExceptionDemo { public static void main(String[] args) { //捕获一个异常 try { method(); }catch(Exception ex){ //做一些异常的处理 } } public static void method() throws Exception{ //throws声明异常 int a = 1; if(a==0) { throw new Exception(); //抛出一个异常对象 } } }

    声明异常

    1、每个方法都必须用throws声明它可能抛出的必检异常,免检异常不要求显式声明(必检异常和免检异常在下一节有说明)

    2、throws后又多个异常时用逗号分隔异常列表

    3、如果方法没有在父类中声明异常,那么久不能在父类中对其进行继承来声明异常。抛出异常

    1、抛出的其实是一个异常类的对象  throw new Exception();

    2、java API异常类至少有两个构造方法:一个无参构造方法和一个可描述这个异常的String参数的构造方法(它可用getMassage()获取)。

    捕获异常

    异常处理器:处理一个异常的代码

    捕获一个异常即从当前方法开始,沿着方法调用链,按异常的反向传播方向找到一个可以处理该异常的异常处理器。

    问:对那些该异常处理却没有异常处理的部分,java怎么处理

    答:如果在调用的方法链中找不到处理器,程序就会终止并且在控制台上打印

    需要注意的是:

    ①一个通用的父类可以派生出各种异常类,而父类可以捕获子类的异常(但不建议,尽量特事特办)

    ②父类的catch块必须在其子类catch块后面

    ③如果方法声明了一个必检异常,就必须在try-catch块中调用它,或者再调用方法中声明要抛出异常,而后再次抛出给其他方法去处理

    获取异常信息

    java.lang.Throwable类中有以下实例方法可以获取有关异常的信息。

    +getMessage():String (返回描述该异常对象的信息)

    +toString():String (返回三个字符的连接:1)异常类的全名;2)“:”(一个冒号和空白)3)getMessage(方法))

    +getStackTrace():StackTraceElement [ ] 在控制台打印Throwable对象和它的调用堆栈信息。返回和该异常对象相关的代表堆栈跟踪的一个堆栈跟踪元素的信息

     

    异常的分类

    异常类可以三种主要类型:①系统错误(Error) ②运行时异常 (RuntimeException)③异常(Exception)

    而系统错误和运行时异常及它们的子类都称为免检异常,其他异常都为必检异常。

     

    finally子句

    try{ 调用方法 }catch{ 异常处理 }finally{ 一定会执行的语句 }

    无论异常是否产生,finally子句总是会被执行的。

     

     

     

    =======================================分隔线===================================================后面还有   何时使用异常、重新抛出异常、链式异常、创建自定义异常四部分内容将会更新

     

     

     

    最新回复(0)