Java基础:异常的限制

2019-03-02 23:43|来源: 网路

 1 package cn.tju.thinkinginjava.exception;
 2 
 3 @SuppressWarnings("serial")
 4 class BaseballException extends Exception {}
 5 @SuppressWarnings("serial")
 6 class Foul extends BaseballException {}
 7 @SuppressWarnings("serial")
 8 class Strike extends BaseballException {}
 9 @SuppressWarnings("serial")
10 class PopFoul extends Foul {}
11 @SuppressWarnings("serial")
12 class StormException extends Exception {}
13 @SuppressWarnings("serial")
14 class RainedOut extends StormException {}
15 
16 abstract class Inning {
17     /**
18      * 说明异常,但可以不抛出
19      */
20     public Inning() throws BaseballException {}
21     
22     public void event() throws BaseballException {}
23     
24     public abstract void atBat() throws Strike, Foul;
25     
26     public void walk() {}
27 }
28 interface Storm {
29     public void event() throws RainedOut;
30     public void rainHard() throws RainedOut;
31 }
32 
33 public class StormyInning extends Inning implements Storm {    
34     /**
35      * 1、可以向子类构造器中加入新的异常说明,但是必须声明基类构造器的异常
36      * */
37     public StormyInning() throws RainedOut, BaseballException {}
38     public StormyInning(String s) throws Foul, BaseballException {}
39 
40     /**
41      * 2、普通方法的异常说明必须与基类方法一致,或少于基类方法;对接口也一样
42      * */ 
43     //!public void walk() throws PopFoul {} // Compile error
44     public void rainHard() throws RainedOut {}
45     
46     /**
47      * 3、接口不能为基类中存在的方法扩展其异常说明,同样基类也不能为在接口中声明的方法扩展其异常说明。
48      * 某方法同时存在于基类和接口中,这种情况下,只能减少该方法的异常说明。
49      * */
50     public void event(){}
51     /**
52      * 4、重写的方法,其异常说明中的异常类
53      * 可以是
54      * 其基类方法的异常
55      * 的
56      * 子类
57      * */
58     public void atBat() throws PopFoul {}
59 
60     public static void main(String[] args) {
61         Inning in = null;
62         try {
63              in = new StormyInning();
64         } catch (RainedOut e) {            
65             e.printStackTrace();
66         } catch (BaseballException e) {            
67             e.printStackTrace();
68         }        
69         //注意这里,需捕获Inning.atBat()抛出的异常
70         try {
71             in.atBat();
72         } catch (Strike e) {            
73             e.printStackTrace();
74         } catch (Foul e) {
75             e.printStackTrace();
76         }
77 
78         /*----------------------------------------------------------------*/
79         StormyInning sin = null;
80         try {
81             sin = new StormyInning();
82         } catch (RainedOut e) {            
83             e.printStackTrace();
84         } catch (BaseballException e) {            
85             e.printStackTrace();
86         }
87         
88         //注意这里,需捕获StormyInning.atBat()抛出的异常
89         try {
90             sin.atBat();
91         } catch (PopFoul e) {
92             e.printStackTrace();
93         }
94     }
95 }

 


转自:http://www.cnblogs.com/QuentinYo/p/3659467

相关问答

更多
  • 只要你有兴趣,肯定能学好的~! 如果是学JAVA的话,建议你先看教程,《JAVA2实用教程》清华大学出版社的,这个作为入门教程还不错,你先照着上面的代码写,学编程语言一定要多写啊~! 有基础了之后,再看中文名叫《JAVA 编程思想》,这本书很精典,一定要看~! 其它一些参考书籍如下: 《JAVA2核心技术卷一卷二》 《JAVA面向对象编程》 《Java 大学简明教程》 《JAVA2入门经典》 《Java程序设计专家门诊》 《Java编程艺术》 希望能帮到你~!
  • java基础案例太多了,建议搜索一个PDF文档下载下来学习,搜索百度->关键字为:java新教材
  • java基础面试题[2022-04-05]

      1.抽象:   抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。   2.继承:   继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继 承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变 ...
  • 基础2个字我个人觉得包括下面几点: 1. Java环境的部署、Java的常用包使用,JDBC、线程、IO、网络四个包都基本理解和使用。特别是常用的Util包等。以及一些基本的算法和逻辑思维。 2. SSH框架,知道框架的作用、功能,最起码能搭起来用,或者别人搭起了添加自己的应用。 3. 数据库,最起码3个表关联的增删改查能独立写出来,了解基本的查询优化知识,知道常用数据库的部署、备份、恢复。 4. HTML、Javascript的知识,至少会一种js框架的使用,能在api的帮助下完成数据校验、DOM操作、A ...
  • java基础面试题[2023-10-31]

    1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继 承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修 ...
  • 零基础确实学JAVA有点困难,很多人都选择报班学。如果你的你的基础好自律性好,可以尝试下自学。 报班学的优点: 1、学习氛围浓厚,大家共同学习和进步,更有学习动力。 2、小班授课的培训班可以实现老师一对一辅导,能学到更多知识和经验。之所以说小班授课,还是为了区别班级人数太多的,毕竟人太多老师就很容易照顾不全,,java学习是分阶段的,每个阶段应该有不同的老师教。如果人多再加上每个老师也教不太久,学习效果有可能偏低。所以既然分阶段学习是定局,就尽量选择小班的才是对自己负责 3、老师资质丰富,可以带你快速入行。 ...
  • 主要还是看你想要走哪个方向! java的应用主要分三个方向 j2se:传统桌面应用程序 这个现在用的已经越来越少,而且java的优势体现的不够彻底 j2me:手机上的应用程序 这个本人比较看好,但是现在的市场貌似还没有完全打开 j2ee:大型企业级开发,运行在web上的应用程序 这个是我现在的主要发展方向,也是java这个技术的主要发展方向。 前面两个,我不是很熟悉,所以就不帮你介绍了 主要为你介绍一下如何系统的学习j2ee的内容: 1、首先你必须学会java基础 包括java语言基础,以及一些常用的类,多 ...
  • 不需要。 但是,两者,还有一定的联系; JavaScript是由Netscape公司开发并随Navigator导航者一起发布的、介于Java与HTML之间、基于对象事件驱动的编程语言,不需要Java编译器,而是直接运行在Web浏览器中,它的前身是Live Script。 而JAVA是一种编程语言;像C++,C语言一样!
  • JAVA学习的基础是兴趣,JAVA和C++有点类似,有人说C++还难一点,如果你C++都会了,那学JAVA就很容易上手,但是我没有学过C++,一开始就直接学JAVA,一样可以学得会,就是慢了点,有其他编程语言基础的话当然比较容易上手。 所以学习JAVA可以不用什么基础语言,你可以直接学JAVA,当然你也可以学其他语言,比如C++,这样多会一种语言当然是好事。
  • 这个挺广泛的 主要是 关于J2SE都算是Java基础了 例如 对象的概念 操作符 初始化与清理 访问权限控制 复用类 多态 接口 内部类 异常处理 字符串 类型信息 泛型 数组 容器 Java I/O系统 枚举类型 注解 并发 图形化用户界面 其实总结起来就是一本书的目录,还有一些主流集成开发环境的集合 建议看一下 Java编程思想 还不错 有更好的书也希望你可以及时推荐