文档章节

Java异常限制

A
 Antin_zhu
发布于 2016/07/02 14:09
字数 493
阅读 34
收藏 1

直接上代码

class BaseException extends Exception{}
    class DetailException1 extends BaseException{}
    class DetailException2 extends BaseException{}
    class MoreDetailException1 extends DetailException1{}

    class BaseClass{
        public BaseClass() throws DetailException1{}

        public void method1() throws DetailException1{}

        public void method2() throws DetailException1,DetailException2{}
    }

    class DetailClass1 extends BaseClass{
        public DetailClass1() throws DetailException1,DetailException2{}

        public void method1() {}
    }

    class DetailClass2 extends BaseClass{
        public DetailClass2() throws DetailException1{}

        public void method1() throws DetailException1{}
    }

    class DetailClass3 extends BaseClass{
        public DetailClass3() throws DetailException1{}

        public void method2() throws MoreDetailException1{}
    }

我们来看看Java编程思想上说的几点:

  1. 当覆盖方法时,只能抛出其基类方法异常说明中列出的那些异常
  2. 异常限制对构造器不起作用,派生类构造器的异常说明必须包含其基类构造器的异常说明
  3. 派生类方法可以不跑出任何异常,即使是其基类方法所定义的异常
  4. 覆盖方法时,只能跑出基类异常或其子异常

从DetailClass1总可以看出,子类构造器可以多抛出其他异常,但一定要包含父类构造器抛出的异常。这个包含指的是一模一样,而不是子异常和父异常的概念。 比如: public DetailClass1() throws BaseException{} public DetailClass1() throws MoreDetailException1{} 都是不对的,编译通不过

相比于子类构造器可以多抛出其他异常,在覆盖方法时,子类却只能抛出父类方法的异常列表。如下 public void method1() throws DetailException1,DetailException2{} 是不允许的

从DetailClass3中的method2的覆盖可以看出,覆盖方法时,子类可以少抛父类的异常列表,且可以父类方法异常的子异常而不可以是父异常,如下: public void metod2() throws BaseException{} 是不允许的

以上可以总结为两点:

  1. 构造器异常列表必须包含父构造器异常列表。可多不少!
  2. 覆盖方法时,子类方法只能抛比父类方法异常更少,可以不抛异常,也可以抛子异常。可少不多!

© 著作权归作者所有

上一篇: Arrays.asList的实现
下一篇: ArrayList ListItr
A
粉丝 0
博文 5
码字总数 2781
作品 0
浦东
私信 提问
使用cgroup限制java使用的内存量-思路

1. 对一个正在运行着的进程来说,在不到达其内存使用量边界的情况下,扩大/缩小其cgroup分配的内存不会对它产生任何影响。 2. 在进程已经使用了一定量的内存的情况下,缩小其cgroup内存至小于...

长平狐
2013/11/25
324
1
深入理解 Java 虚拟机学习(一) -- java 内存区域与内存溢出异常

java 内存区域 要进行 java 虚拟机的深入学习,首先要了解的是 java 的内存划分。大部分程序员一开始接触 java ,对于内存的划分是印象是堆内存和栈内存,而这仅仅适合于入门的学习,实际上 ...

偷星辰夜
2017/09/28
0
0
JDK1.8.0_151的无限制强度加密策略文件变动

JDK1.8.0_151的无限制强度加密策略文件变动 JDK1.8.0151无需去官网下载 这个jar包,只需要修改这目录下的文件配置即可。 随着越来越多的第三方工具只支持 JDK8,最近公司也计划从 JDK7 升级到...

指尖Coding
03/22
167
0
Java异常处理 10 个最佳实践

异常处理是Java 开发中的一个重要部分。它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等。Java提供了几个异常处理特性,以try,catch...

Java技术栈
2018/08/27
82
0
JVM(二)Java虚拟机组成详解

导读:详细而深入的总结,是对知识“豁然开朗”之后的“刻骨铭心”,想忘记都难。 Java虚拟机(Java Virtual Machine)下文简称jvm,上一篇我们对jvm有了大体的认识,进入本文之后我们将具体...

王磊的博客
01/14
165
0

没有更多内容

加载失败,请刷新页面

加载更多

Dubbo-自适应拓展机制

背景 在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等,这些都是Dubbo的基础组件。这些基础组件的拓展不是在系统框架启动阶段被加载,而是拓展方...

rock-man
29分钟前
5
0
Kali安装fcitx输入法(五笔)

安装fcitx > sudo apt-get install fcitx-rime fcitx-config-gtk3 重启 > sudo reboot fcitx配置 效果就是这样 配置输入法切换 系统设置...

yeahlife
31分钟前
4
0
IE之css3效果兼容

本文转载于:专业的前端网站▷IE之css3效果兼容 一、兼容css阴影效果(ie滤镜) 1.Shadow,阴影 .shadow { -moz-box-shadow: 3px 3px 4px #000; -webkit-box-shadow: 3px 3px 4px #000; box-sha...

前端老手
34分钟前
4
0
NiushopB2C开源商城功能列表说明:

B2C单商户免费版:PC商城+微商城 B2C单商户标准版:PC商城+微商城组合套餐+阶梯优惠核销功能 B2C单商户企业版:PC商城+微商城拼团+组合套餐阶梯优惠+核销功能 B2C单商户分销版:PC商城+微商城...

niushop-芳
35分钟前
4
0
图片如何转GIF图片呢

如何将生活中拍摄的好玩有趣的图片制作成GIF动图呢?相信很多小伙伴都不知道要如何制作,其实制作方法非常的简单,下面分享一个图片转GIF动图的方法,希望这个方法能够帮助大家在与好友斗图时...

白米稀饭2019
42分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部