java子类的子类_java 小问题 子类的子类是父类的子类还是间接子类

本文介绍了在Java中如何理解和处理Exception及RuntimeException。通过示例代码展示了使用Throwable捕获所有异常的情况,以及不捕获时程序的运行结果。强调了RuntimeException及其子类不需要显式捕获,未捕获时程序会自动终止。
摘要由CSDN通过智能技术生成

展开全部

你应该这样去理解 “所有“ 的 Exception 类。62616964757a686964616fe59b9ee7ad9431333332623336

在 java 中 java.lang.Exception 是 java.lang.Throwable 的子类,而 java.lang.RuntimeException 也是 java.lang.Throwable 的子类。

因此,如果有一段代码,不管是会发生 Exception 还是 RuntimeException ,而你想一次性捕获所有错误的时候,这样写:

public static void main(String[] args) {

System.out.println("---------- 测试输出 1 ----------");

try{

String s = null;

//注:这一个会抛出 NullPointException,即 RuntimeException的子类。

s = s.substring(0);

}catch(Throwable ex) {

ex.printStackTrace();

}

System.out.println("---------- 测试输出 2 ----------");

try{

String s = "123";

//注:这一个会抛出 IndexOutOfBoundsException,即 RuntimeException 的子类。

int i = s.indexOf(200);

}catch(Throwable ex) {

ex.printStackTrace();

}

System.out.println("---------- 测试输出 3 ----------");

}

你在上面的代码里面可以看到,即使是发生了 RuntimeException ,但是使用了 Throwable 也可以捕获到,而且你不用关心具体是什么原因出错了,只要有错误,用 Throwable 都可捕获到。

如果不使用 Throwable ,又是一个什么情况呢,这个时候,你就需要在程序中针对某一个 Exception 或 RuntimeException 来写 catch 了:public static void main(String[] args) {

System.out.println("---------- 测试输出 4 ----------");

try{

String s = null;

//注:这一个会抛出 NullPointException,即 RuntimeException 的子类。

s = s.substring(0);

}catch(NullPointException ex) {

ex.printStackTrace();

}

System.out.println("---------- 测试输出 5 ----------");

try{

String s = "123";

//注:这一个会抛出 IndexOutOfBoundsException,即 RuntimeException 的子类。

int i = s.indexOf(200);

}catch(IndexOutOfBoundsException ex) {

ex.printStackTrace();

}

System.out.println("---------- 测试输出 6 ----------");

}

但是,其实所有 RuntimeException 及其子类都不需要在程序中显式调用的,如果不进行显式调用,则表明你不需要理会错误,当有任何错误发生时,让程序自动终止:

public static void main(String[] args) {

System.out.println("---------- 测试输出 7 ----------");

String s = null;

//注:这一个会抛出 NullPointException,即 RuntimeException 的子类。

s = s.substring(0);

System.out.println("---------- 测试输出 8 ----------");

String s = "123";

//注:这一个会抛出 IndexOutOfBoundsException,即 RuntimeException 的子类。

int i = s.indexOf(200);

System.out.println("---------- 测试输出 9 ----------");}

这个时候,在上面代码中,因为没有进行 catch ,所以,第 2 句 “测试输出 8” 就不会执行到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值