关于RuntimeException类的特点和小示例

关于RuntimeException的特点与示例,在百度、CSDN上找了一圈,发现大部分说的都是RuntimeException包括的几个异常代表,而说其特点和示例的却没有几个,所以这个在面试中出现频率听说不低的问题上,渣渣我写一下自己的总结,也欢迎各路大神指正。

对于异常分两种
⑴编译时被检测的异常
⑵编译时不被检测的异常(及运行时异常,RuntimeException以及子类)
⑶其关系图如下
这里写图片描述

所以说,RuntimeException是Exception的一个特殊的子类,它独有的特点是有
1.不必在方法上声明抛出
2.不用try catch模版一样能编译
3.一旦遇到异常,且没有try catch进行处理,程序终止,输出异常

example:
interface S
{
double getS();
}

class ZeroException extends RuntimeException
{
ZeroException(String msg)
{
    super(msg);
}
}
class Chang implements S 
{
private int len,wid;
Chang (int len,int wid) // 在方法上没有进行异常抛出
{
    if(len<=0&&wid>=0)
        throw new ZeroException("出现非法值");
else
    {
    this.len=len;
    this.wid=wid;
    }
}
public double getS()
{
    return (len*wid);
}
}
class Gg
{
public static void main(String[] args)
{
        //没有进行try catch
        Chang f = new Chang(-3,4);
        System.out.println(f.getS());

}
}

程序能成功编译
输入如下
这里写图片描述

那么问题就来了,什么时候自定义异常继承RuntimeException,而不是Exception呢?

就像上面这个例子,当输入有小于等于0的值的时候,输出为负数,那么整个程序就没有了意义,就算进行了try catch也没有意义,因为输入是非法的,使用程序的人犯使程序没有意义的错,我们就要告诉他为什么错了哪里错了,并终止程序。
当这种,因为使用程序者所犯的错,导致程序有没意义,或者必须强行终止的时候,这个异常就继承RuntimeException,且不用try catch处理。一旦出现这个异常,输出异常信息,并直接终止异常。

PS。虽然RuntimeException属于特例,但它一样能被try catch进行处理,当它被catch处理了,那么出现异常程序并不会终止,而是按照处理中的来。不过这么做就没有了意义,因为这样做继承RuntimeException和Exception就没有区别了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值