`
hbdzhm
  • 浏览: 35296 次
  • 来自: ...
社区版块
存档分类
最新评论

异常的限制

阅读更多
读书笔记:
class A1 extends Exception {}
class A2 extends A1 {}
class A3 extends A1 {}
abstract class inning {
public inning() throws A1 { }
public void event() throws A2 { }
public abstract void aBat() throws A1, A2;
public void walk() { }
}
class B1 extends Exception {}
class B2 extends B1 {}
class B3 extends A2 {}
interface Storm {
public void event() throws B1;
public void rainHard() throws B2;
}
public class NeverCaught extends inning implements Storm {
public NeverCaught() throws B2, A1 { }
public NeverCaught(String s) throws A2, A1 { }
public void rainHard() throws B2 { }
public void event() { }
public void walk() {
super.walk();
}
public void aBat() throws B3 {
}
public static void main(String[] args) {
try {
NeverCaught n = new NeverCaught();
n.aBat();
} catch (B3 b3) {
System.out.println("b3");
} catch (B2 b2) {
System.out.println("b2");
} catch (A1 a1) {
System.out.println("a1");
}
try {
inning in = new NeverCaught();
in.aBat();
} catch (A3 a3) {
System.out.println("a3");
} catch (A2 a2) {
System.out.println("a2");
} catch (B2 b2) {
System.out.println("a1");
} catch (A1 a1) {
System.out.println("a1");
}
}
}


1.inning类中,构造器和event方法都生命抛出异常,实际上却没抛出,抽象方法abat()也可以不用抛出。基类中抛出异常的方法,子类可不声明,
2.如果接口的方法不是来自于基类,接口里的rainHard方法可抛出任何异常
3.NeverCaught的event因为继承基类和实现接口基类都有此方法,并且基类方法都有异常声明,否则使用基类的时候就不能改变inning中方法的声明
4.异常限制对构造器不起作用
5.重载后的event方法显示:派生类方法可以不抛出任何异常即时是基类定义的异常,因为即使基类方法会抛出异常,这样做不会破坏已有程序,
public void aBat() throws B3
它抛出B3,B3继承基类的的abet()的话,你就肯定捕获B3,如果你写的代码同inning打交道的话,并且调用了他的abet方法,因为B3继承了A2,所以异常也能处理A2。

6.main方法,如果你处理的是NeverCaught对象的话,编译器只会强制你捕获这个类抛出的异常,如果转换成基类的话,就会强制你捕获基类的异常。

尽管继承过程中,编译器对异常说明做强制要求,但异常说明并不是方法原型的一部分,方法原型是由方法的名字与参数的类型组成,因此你不能根据异常说明的不同来重载方法,
一个基类方法的异常说明不一定出现在子类方法的异常说明里面,
这一点与继承的规程明显不同,基类的方法必须出现在子类里面,继承和重载过程中,方法的异常说明的接口不是变大了而是变小了。。这恰好和类接口在继承时候的情形相反。




分享到:
评论

相关推荐

    java 文件名大小限制异常类java 文件名大小限制异常类java 文件名大小限制异常类

    java 文件名大小限制异常类java 文件名大小限制异常类java 文件名大小限制异常类java 文件名大小限制异常类java 文件名大小限制异常类java 文件名大小限制异常类java 文件名大小限制异常类java 文件名大小限制异常类...

    试论java编程中异常处理的方法与技巧.pdf

    因此,通常情况下我们将检查型的异常转换为运行时异常抛出,这样就可以将指定的异常限制在指定的模块中,比如将SQLException放入到DAO层,这样就可以把具有明确的遗产信息的运行时异常抛出到客户层。 3.6 减少不必...

    java 文件名称超长限制异常类 java 文件名称超长限制异常类

    java 文件名称超长限制异常类 java 文件名称超长限制异常类java 文件名称超长限制异常类 java 文件名称超长限制异常类java 文件名称超长限制异常类 java 文件名称超长限制异常类java 文件名称超长限制异常类 java ...

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

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

    C和C++中的异常处理

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

    基于java涉及父子类的异常详解

    Java中的构造函数并不受到覆盖方法的异常限制。这意味着子类构造函数可以抛出任何类型的异常,而不必考虑父类构造函数可能抛出的异常。然而,当创建子类对象时,父类的构造函数会被自动调用。由于子类构造函数不能...

    基于异常检测的网络安全技术分析.pdf

    但同时,异常检测也存在一些限制,如计算复杂度高、需要大量数据等。 8. 未来发展方向 未来,异常检测在网络安全技术中的发展方向将包括异常检测算法的改进、网络攻击检测的自动化和智能化、异常检测在物联网中的...

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

    为了解决上述问题,本文提出了一种新的算法,旨在打破Java精确异常的要求对指令调度的限制,同时又能保证异常发生时精确异常的要求不被破坏。该算法的核心思想是在确保满足精确异常要求的前提下,尽可能地提高指令级...

    VC异常处理实例有界面

    5. **SEH的限制** - **不跨平台**:SEH是Windows特有的,其他操作系统不支持。 - **不兼容C++异常**:虽然两者可以共存,但直接处理C++异常可能会导致问题,需要小心设计。 6. **与C++异常的配合** VC6允许同时...

    自定义异常

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

    linux异常测试脚本合计

    在Linux系统中,异常测试是确保软件或服务在面临异常情况时仍能稳定运行的关键环节。这个名为"linux异常测试脚本合计"的项目显然关注的是利用shell脚本来模拟和测试各种异常状况,以评估系统或应用的健壮性和容错...

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

    在实验中,原本使用数组存储银行客户和账号的限制被`ArrayList`取代,这样就可以根据需要增加或减少客户和账号的数量,而无需预先确定其大小。 4. **Account类代码修改**: `Account`类是所有账户的抽象基类,包含...

    unity 捕捉异常和移动设备崩溃Android

    在Unity游戏开发中,确保应用在遇到错误时能够稳定运行并提供有效的反馈至关重要。"unity 捕捉异常和移动设备崩溃Android"这个主题...同时,对移动设备的特性和限制有深入理解,将有助于构建更加健壮和用户友好的游戏。

    金融系统常用异常处理

    4. 故障隔离:将异常影响范围限制在最小,避免故障扩散。 5. 问题分析与修复:根据日志信息定位问题,修复异常源。 6. 回复服务:确认修复后,重新启动服务或部分服务,确保业务正常运行。 7. 后期优化:对异常进行...

    Java常见异常大全.pdf

    这些异常通常属于JVM层面的异常,或者是由程序逻辑错误和资源限制等因素引起的。 了解和掌握这些异常,对于编写健壮的Java程序至关重要。开发人员需要根据异常的类型和上下文信息来合理处理这些异常,或者通过抛出...

    Oracle 存储过程异常处理.docx

    * DUP_VAL_ON_INDEX(ORA-00001):对于数据库表中的某一列,该列已经被限制为唯一索引,程序试图存储两个重复的值 * VALUE_ERROR(ORA-06502):在转换字符类型、截取或长度受限时,会发生该异常 * STORAGE_ERROR...

    c,c++异常处理

    在C++中,“异常”这个词的含义较为广泛,它既可以指标准异常处理机制中的异常,也可以指微软特定的结构化异常处理(SEH)中的异常。为了清晰起见,作者对“异常”进行了分类。 - **标准异常**: 这些异常是C++标准中...

    matlab开发-异常值检测和移动

    `license.txt`文件则是软件的许可协议,它规定了该代码的使用条件和限制,使用者必须遵守以避免法律问题。 总的来说,MATLAB提供的工具和算法使得异常值检测和数据平滑变得相对容易。通过理解Hampel滤波器的工作...

    C和C++ 异常处理

    然而,从C++11开始,这种做法被视为不推荐,因为它们可能导致编译器进行不必要的优化限制。 7. **异常效率** 虽然异常处理增加了程序的开销,但这种开销通常只在异常实际发生时才体现出来。在正常执行路径上,异常...

Global site tag (gtag.js) - Google Analytics