Java学习笔记:Java的异常机制

Java学习笔记:Java的异常机制

两种处理方法:

  • try-catch
  • throws
    throws抛出的异常必须是throwable的子类

try-catch语句

try
{
    语句1//如果语句1有异常,则语句2不会执行,直接到catch
    语句2//放入可能异常的句子
}
catch(Exception e)   //catch (错误类型 + 对象),                  
{                    //错误类型一般写Exception就可以了,因为Exception是其他错误类型的父类
    //处理或者提醒用户的句子
}
//可以捕捉多个异常
catch(异常类型1 e)    
{
    //...
}
catch(异常类型2 e)
{
    //...
}
...
finally
{
    //无论是否捕捉到,都一定会执行的代码
    //一般用于关闭文件,删除临时文件等资源的清理工作
}

上面程序中,所有的catch(){} 只有一个catch被执行 或者 都不执行
catch与catch之间不能有代码。

  • 注意事项
    先catch子类异常,后catch父类异常,反之编译报错,因为父类异常里就包括所有子类异常。
class A extends Exception {
}

class B extends A {
}

class C extends B {
}

class M {
    public void compare(int i, int j) throws A, B {
        if (i > j)
            throw new A();
        else
            throw new B();
    }
}

public class TestTryCatch {
    public static void main(String[] args) {
        M mm = new M();
        try {
            mm.compare(-4, 1);
        } catch (B bb) {
            System.out.println("左边不能小于右边");
        } catch (A aa) {
            System.out.println("左边不能大于右边");
        }

    }
}

子类重写了基类方法时,子类方法抛出异常的范围不能大于基类方法抛出的异常范围
子类方法可以不抛出异常,也可以只抛出基类方法的部分异常,但不可以抛出基类方法以外的异常

//自定义异常A
class A extends Exception
{
}

//自定义异常B
class B extends Exception
{
}

//自定义异常C
class C extends Exception
{
}

class M
{
    void f() throws A, B
    {
    }
}

class N extends M
{
 //可以throws A或B,也可以throws A,B  也可以不throws,
 //但不可以throws C  即"子类覆盖了基类方法时,
 //子类方法抛出异常的范围不能大于基类方法抛出的异常范围"
    void f() throws A,B 
    {
    }
}

class Test
{
    public static void main(String[] args)
    {
        M m = new M();
        N n = new N();

        System.out.println("1111");
    }
}
  • 异常的处理机总结

    1.Java程序运行出错时,系统先自动检测错误,并立刻生成一个与该错误对应的异常对象。
    2.然后将该异常对象提供给JVM。
    3.JVM会先找相应的代码来处理该异常,若没找到,则由JVM做些简单处理后,程序被强行终止。
    4.程序员可以自己编写代码捕捉并处理相应异常.

  • 补充:

try
{
    //...
}
catch(Exception e)
{
    e.printStackTrace();
}
printStackTrace

将错误对象e在堆栈中发生的错误信息及路径打印出来(即打印出错误信息)

发布了7 篇原创文章 · 获赞 8 · 访问量 133

猜你喜欢

转载自blog.csdn.net/weixin_44983848/article/details/105508407