`
zachary.guo
  • 浏览: 482500 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

异常的限制

阅读更多
    java 程序声明异常时,父类的某个方法声明了异常的抛出,那么子类需要声明异常的抛出吗?针对这个问题,本篇文章将应对各种情况作出分析。

    ●  父类有无参构造函数且未声明任何异常的抛出
          子类可以在任何一个构造函数中声明抛出任何异常。因为构造子类前只会调用父类的无参构造函数,构造父类时不会出现异常,子类的任何一个构造函数是否抛出异常都无所谓。

    ●  父类有有参的构造函数
          不管它是否声明了异常的抛出,子类无需写同样的构造函数,写了也不用声明抛出同类异常,因为构造子类对象前只会调用父类的无参的构造函数。

    ●  父类有无参构造函数且声明了异常抛出
          子类必须在它的任何一个(子类构造前会调用父类的无参构造函数,由于父类声明了异常,因此在子类的构造函数中要么继续声明抛出,要么使用 try catch 块。若父类声明的是 RuntimeException,那么子类可以不声明异常的抛出)构造函数中声明异常的抛出,且抛出的异常类型至少和父类异常类型一致,也可以父类异常类型的父类,同时还可以抛出其它类型的异常。

    ●  父类的方法未声明任何异常的抛出
          子类覆写此方法时不能声明任何异常(除了 RuntimeException)的抛出。
Parent P = new Child();
/** 
 * 由于 Parent 声明调用 hello 方法时不会出现异常,可是 Child 覆写 hello 方法时却声明需要抛出异常。
 * 根据多态,以下的调用将调用 Child 的 hello 方法(需捕捉异常),而调用者却是 Parent,Parent 声明
 * 没有异常。因此暴露給我们的是 Parent 引用,我们不会去捕捉异常,这样就矛盾了,所以子类覆写父类时
 * 不能抛出异常。
 */
p.hello();


    ●  父类的方法声明了异常(RuntimeException)的抛出
          子类可以不做异常抛出的声明,也可以声明任何 RuntimeException 的抛出。

    ●  父类的方法声明了异常(非 RuntimeException)的抛出
          子类可以不做异常抛出的声明。一旦声明了,那么其异常类型至多和父类声明的异常类型一样,包括可以是父类异常类型的子类。
Parent p = new Child();
/**
 * 由于 Parent 声明调用 hello 方法时调用者需要捕捉异常。Child 覆写 hello 方法时未声明异常的抛出。
 * 根据多态,以下的调用将调用 Child 的 hello 方法(不需捕捉异常),调用者是 Parent,Parent 声明需要
 * 捕捉异常。因此暴露給我们的是 Parent 引用,尽管调用的是 Child 的 hello 方法(不需要捕捉异常),我们
 * 在下面程序段捕捉异常也不矛盾,Parent 声明异常只是告知在调用 hello 时有可能会发生异常,子类实现不
 * 出现异常与这并不矛盾。
 */
try {
  p.hello();
} catch (Parent 类声明的异常类型 e) {
  ...
}

/**
 * 由于 Parent 声明调用 hello 方法时调用者需要捕捉异常。Child 覆写 hello 方法时声明了异常的抛出。
 * 根据多态,以下的调用将调用 Child 的 hello 方法(需捕捉异常),调用者是 Parent,Parent 声明需要
 * 捕捉异常。因此暴露給我们的是 Parent 引用,我们要在以下程序段捕捉 Parent 类声明的异常类型,因此
 * 子类(Child) 覆写时声明的异常类型必须是父类声明异常类型的子类(子集)
 */
try {
  p.hello();
} catch ((Parent 类声明的异常类型,Child 类声明的异常类型应该是 e 的子类或者就是e) e) {
  ...
}


    ●  子类继承父类的同时还实现了某一接口
          若接口和父类有同样的函数签名,声明抛出的异常类型不同,只有一种情况允许这样:子类覆写该方法,不声明任何异常抛出。若不这样覆写的话,将不会通过编译。接口中的方法在父类中不存在,子类实现方法时就把接口当作父类。
  • 大小: 7.7 KB
分享到:
评论

相关推荐

    论文研究-现货市场异常波动下股指期货交易限制对市场质量的影响分析.pdf

    论文研究-现货市场异常波动下股指期货交易限制对市场质量的影响分析.pdf, 通过计算机仿真构建了基于投资者策略的跨市场金融平台,提出了异常波动下交易限制措施对市场...

    C和C++中的异常处理

    1.异常和标准 C 对它的支持 2. Microsoft 对异常处理方法的扩展 ...12. unexpected()的实现上固有的限制 13. 异常安全 14. 模板安全 15. 模板安全(续) 16. 指导方针 17. C++异常和 Visual C++ SEH 的混合使用

    自定义异常

    用户密码的合法化验证,要求密码由4到6个数字组成,若长度不落在这个范围或不是由数字组成,抛出自己的异常。

    JAVA实验十一 异常处理与集合类

    在实验四和实验五中,在银行类中使用数组存放客户,在客户类中使用数组存放帐号,客户和帐号的数量受到了限制,不能随意增加。修改程序,改用ArrayList来存放客户和帐号,最后测试你的程序。 【Account类代码(填写...

    JAVA异常PPT

    主要讲述JAVA中的异常,自己定义异常类,及其使用方法。

    Android Intent传递数据大小限制详解

    前言 ...这就牵涉到一个问题:Intent 传递数据大小限制。 Intent到底能够携带多少数据呢? 使用Intent传送数据时,可能会出现异常 在Intent中传入一个Parcelable对象;例如传入一个bitmap对象。 代

    全球重力异常和运输

    与圆环上的T变换相对应的大亚纯性的η不变量将热有效作用的系数限制为mod2。我们证明,使用全局异常匹配获得的Gravitinos奇偶传输奇偶传输的结果与 直接摄动计算。 在d = 6中,我们看到异常多项式中的第二个...

    保证Java精确异常的指令调度技术

    Java语言的精确异常要求和Java程序中频繁出现的异常检测严重阻碍或限制了指令调度在Java本地代码编译中的应用,从而减少了代码的指令级并行度。提出的算法可以使指令调度打破Java精确异常要求,能最大程度地发挥作用,...

    从软异常维度超导Regge限制

    威尔逊线捕获了散射幅度的重要特征,例如与红外散度有关的软效应和Regge极限。 除了前导功率近似之外,还必须考虑对实际图像的校正。... 我们还分析了振幅的其他限制,并推测出高能量下总横截面的精确公式。

    精度限制和风味异常的全球可能性

    在标准模型有效场理论中,我们在6维Wilson系数空间... 它可以作为独立于模型的拟合或测试动力学模型(尤其是为解决B物理异常而构建的模型)的基础。 我们讨论了许多示例应用程序,它们重现了EFT和模型构建文献的结果。

    协调B介子衰变异常与中微子质量,暗物质和来自风味违规的限制

    基于对RK * $$ {R} _ {K ^ {\ left(* \ right)}} $$异常的解释,我们提出了通过两个标量SU(2)L三重态le夸克和三代夸克的标准模型扩展 三胞胎马里亚纳费米子。 Z 2对称性加强了标距组,确保了最轻的Z 2奇数粒子的...

    【09-异常处理】

     –无法穷举所有异常情况:因为人类知识的限制,异常情况总比可以考虑到的情况多,总有“漏网之鱼”的异常情况,所以程序总是不够健壮。  –错误处理代码和业务实现代码混杂:这种错误处理和业务实现混杂的代码...

    springboot+redis+shiro单点登录,统一异常处理,统一日志

    springboot+redis+shiro单点登录,统一异常处理,统一日志,缓存

    限制最小风味违反RD(*)异常的le夸克解释

    可以通过引入超出涉及新状态的标准模型的交互来解决此异常,例如,le色。 由于涉及的过程是夸克风味变化,因此任何新的状态都需要耦合到至少两个不同的夸克世代,在夸克领域中需要非平凡的风味结构,同时避免风味...

    excel转pdf,解决aspose100次转换限制问题|excel2PdfNoLicense.zip

    excel转pdf,用新奇的思路解决aspose100次转换限制的问题,仅供学习和参考,请勿商用!水印的问题可以通过添加一张空白图片到pdf上解决!

    集群配置(Torque安装配置+Maui安装配置+SSH免验证设置+节点共享目录设置+用户硬盘空间限制和核心使用限制设置)异常详细版

    由于导师需要配置集群服务,于是花了几个月,各种百度,查官方文档,各种测试+调试,便写出了这个文档,并把导师管理的几十台新旧服务器都安装配置成功了,虽然花了不少时间,但是在集群配置过程中也学到了不少知识...

    严重限制了21厘米异常的暗物质解释

    在这封信中,我们探索了这种可能性,应用了宇宙微波背景,轻元素丰度,Supernova 1987A和各种实验室实验的限制。 考虑了这些约束后,我们发现排除了能够生成观察到的21厘米信号的绝大多数参数空间。 唯一可行的模型...

    C与C++中的异常处理

    12. unexpected()的实现上固有的限制.............................................................................89 13. 异常安全.............................................................................

    pubwin2009伴侣改帐过异常流水帐

    本软件在未注册之前会有使用时间或功能限制。如果您在试用后决定一直使用下去,请通过本软件商城向...·修正主要的交班对帐 异常记录 ·自动探测数据库密码. 购买联系作者QQ:252011257 个人主页 http://netbars.org

    QCD热相变中的异常匹配

    由于在Roberge-Weiss点处具有假想的重子化学势,因此存在ℤ2对称性可用于定义限制。 我们证明了ℤ2对称性和手性对称性之间存在混合异常,这在禁闭性和手性对称性破坏之间给出了很强的关系。 该异常是QCD拉格朗日计...

Global site tag (gtag.js) - Google Analytics