永发信息网

为什么java中Exception的对象能够获取子类的信息.

答案:3  悬赏:80  手机版
解决时间 2021-02-04 21:19
  • 提问者网友:且恨且铭记
  • 2021-02-04 18:21
如:
try{
int i=9;
i/=0;
}catch(Exception e){
System.out.println(e.getClass()+“ ”+e.getMessage())
}
会输出 class:AmethticException /by zero
最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 2021-02-04 19:22
首先要明白异常的抛出与捕获机制:
当我们没有在程序中主动使用throw或throws关键字抛出一个异常时,异常一般都是有JVM,即java虚拟机抛出的,我们所写try catch语句块只是用来捕获异常的。JVM在抛出这个异常信息之前会对异常做封装处理,确定异常时什么类型的异常。比如,此题JVM抛出的就是一个ArithmeticException,然后就查看程序能捕获什么类型的异常(就是catch语句块的参数),如果程序能捕获的异常类型恰好就是这种异常或者包含这个类型,就把这个异常传递给程序处理(本题中就是封装进了e对象中),以便程序能继续运行下去。要是程序没有对这种异常进行捕获或处理,程序就会报错,并终止执行。

由于Exception类是所有异常信息的父类,所以当在catch语句的参数适用Exception 时,表示该程序能够捕获任何类型的异常,当然也包括了ArithmeticException。其实,ArithmeticException是直接继承的RuntimeException,而RuntimeException才是直接继承至Exception,如果把程序中的Exception换成RuntimeException,输出结果是一模一样的。
也许说的有点绕,好好体会下。
全部回答
  • 1楼网友:西风乍起
  • 2021-02-04 20:05
在调用方无权需要访问资源时,引发 securityexception 异常。例如在开发桌面辅助b/c程序, ui操作直接修改注册表, 可是当前用户是来宾用户登录,没有修改注册表的权限, 这时候就会触发securityexception
  • 2楼网友:雾月
  • 2021-02-04 19:36
这个是java的多态问题,你自己随便写个 接口 or 抽象类 or 普通类,在里面定义一个方法,然后再用一个类去继承它,并且覆写里面的方法 之后用子类去创建父类对象,也就是 父类 父类对象名 = new 子类(); 然后调用被覆写的方法,你看看是不是调用的子类的方法,而不是父类的 这里一个道理,Exception是java中各种异常的父类,其他各种异常都是他的子孙类,自然输出的是子类的信息
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯