1 产生一个违例时,首先按照与创建java对象一样的方法创建违例对象:在内存“堆”里,使用new 来创建。随后停止当前执行路径,然后从当前环境中释放违例句柄。此时,违例控制机制会接管一切,并开始查找一个恰当的地方,用于继续程序的执行。这个地方便是违例控制器,catch语句。它的职责是从问题中恢复,使程序要么执行另一条路径,要么简单的继续。

2 违例更重要的信息保存在违例类型中,而不是违例对象中。

3 如果在当地捕获了抛出的违例,需要在本地使用try...catch 语句,若没有使用try....catch语句,则在函数后面需加上违例规范:throws Exception

4 Eception类继承于Throwable,这个类中有printStackTrace()这个方法用于打印抛出异常的路径。

5 fillInStackTrace()函数返回Throwable对象,此时是不会被捕获Exception的捕获器捕获的。相当于不会自动下溯造型。

6 RuntimeException 类是java内置的类,所以永远不要担心运行期的异常,也不要抛出一个RuntimeException的异常,java会自动处理有关的异常。

7 关于违例的限制,参见一下代码:

class BaseballException extends Exception {}

class Foul extends BaseballException {}

class Strike extends BaseballException {}

abstract class Inning {

Inning() throws BaseballException {}

void event () throws BaseballException {

}

abstract void atBat() throws Strike, Foul;

void walk() {}

}

class StormException extends Exception {}

class RainedOut extends StormException {}

class PopFoul extends Foul {}

interface Storm {

void event() throws RainedOut;

void rainHard() throws RainedOut;

}

public class StormyInning extends Inning implements Storm {

StormyInning() throws RainedOut,

BaseballException {}

StormyInning(String s) throws Foul,

BaseballException {}

public void rainHard() throws RainedOut {}

public void event() {}

void atBat() throws PopFoul {throw new PopFoul();}

public static void main(String[] args) {

try {

StormyInning si = new StormyInning();

si.atBat();

}

catch(Foul e) {

System.out.println("foul hhhhh");

}

catch(RainedOut e) {

System.out.println("rainedout");

} catch(BaseballException e) {System.out.println("baseball");}

try {

Inning i = new StormyInning();

i.atBat();

}

catch(PopFoul e) {

System.out.println("popfoul hhhhhhh");

}

catch(Strike e) {

System.out.println("strike");

} catch(Foul e) {

System.out.println("foul hhhhh");

} catch(RainedOut e) {

System.out.println("rainedout");

} catch(BaseballException e) {System.out.println("baseball");}

}

}

rainHard()抛出与父类一样的异常,可以。event()不抛出任何异常,可以,即使父类抛出了异常。atBat() 抛出了PopFoul异常,父类有抛出Foul异常,因为PopFoul继承于Foul,捕获父类的捕获器 同样可以捕获子类,所以,atBat可以抛出PopFoul异常。综上,子类抛出的异常不能和父类不同,可以不抛出,可以是其子类,当然也可以抛出一样的异常。而且,一个类继承另一个类并且实现接口的时候,其抛出的异常要与继承的类有上述关系。当你这样写:void walk() throws PopFoul {}   或者public void event() throws RainedOut {}时,编译器报错。

8 在没有垃圾回收和自动调用析构方法的语言中,finally语句会显的很重要,因为需要手动回收占用的内存资源。在含有垃圾回收机制的语言中,finally常用来关闭文件,释放网络连接等任务。在try{}catch{}finally{}中,不管是否抛出异常,都会执行finally语句,不管抛出的异常是否被catch捕获,都会执行finally语句。

暂时总结这么多吧~~~

java自动违例设计,java学习记录(二):java的违例控制机制相关推荐

  1. java冰法_Java基础学习笔记二 Java基础语法

    注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /*这是 * 一段注释, * 它跨越了多个行*/ public void ...

  2. java基础案例教程前4章知识点_java学习记录4 Java基础知识点

    java学习记录4 Java基础知识点 1. 注释 单行注释 使用"//"开头,后面是注释的内容 一般在要注释的语句的上面加注释 多行注释 以"/*"开头,以& ...

  3. IDL学习记录和Java调用IDL方法

    IDL学习记录和Java调用IDL方法 2018年02月06日 08:32:02 回首1949 阅读数:385更多 个人分类: 随想 版权声明:乐呵乐呵得了 https://blog.csdn.net ...

  4. Java常用类(谷粒商城学习记录)

    Java常用类 谷粒商城学习记录 谷粒商城学习记录 谷粒商城学习记录 干嘛老是提示我与别人的文章相似呢?真的是我自己整理的啊啊啊 老是提示与这个文章相似 https://blog.csdn.net/c ...

  5. Android动画学习记录二(属性动画、估值器和插值器)

    Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) 一.补间动画缺陷 二.属性 ...

  6. 大数据之spark学习记录二: Spark的安装与上手

    大数据之spark学习记录二: Spark的安装与上手 文章目录 大数据之spark学习记录二: Spark的安装与上手 Spark安装 本地模式 Standalone 模式 基本配置 步骤1: 复制 ...

  7. MySQL学习记录 (二) ----- SQL数据查询语句(DQL)

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  8. Cadence Allegro 设计流程学习记录

    Cadence Allegro 设计流程学习记录 前提摘要 软件设计版本: 电路仿真软件:NI Multisim 14.0,TINA-TI. 原理图设计:Design Entry CIS 16.6. ...

  9. HTML学习记录二:html标签(五):超链接标签

    HTML学习记录二:html标签(五):超链接标签 一.超链接标签写法 二.超链接标签的属性 三.超链接的锚点用法 四.链接分类 一.超链接标签写法 在 HTML 标签中, 标签用于定义超链接,作用是 ...

最新文章

  1. JACK——AgentManual5 Events
  2. 利用Powershell SSH-Session 工具管理 linux或网络设备
  3. html 跟随鼠标移动线条,canvas跟随鼠标移动的随机线条
  4. LeetCode 1696. 跳跃游戏 VI(优先队列 / 单调队列)
  5. 缓存穿透、击穿、雪崩什么的傻傻分不清楚?看了这篇文后,我明白了
  6. 5个实用提速深度学习模型的方法
  7. DWR Sample
  8. 水晶头超5类和6类的区别是什么?六类水晶头和超五类水晶头通用吗?
  9. pycharm设置python运行根目录
  10. linux下mysql8.0初始密码_Linux下MySQL8.0修改初始密码
  11. db2检查什么表被锁住了,如何解锁
  12. shell脚本:备份数据库、代码上线
  13. ffmpeg实例,fade淡入淡出效果
  14. MATLAB写入文件的操作
  15. 为什么 50 欧姆成为了射频传输线的阻抗标准
  16. jacob操作word教程
  17. android 动画后动画效果,Android5.0之后 VectorDrawable实现超炫酷动画效果
  18. SQL SERVER2008R2安装报错 安装程序集“Microsoft.VC80.ATL,version=“8.0.50727.1833“。。。
  19. 2021年中国A股上市企业市值百强城市排行榜:北京位居榜首,60个城市有千亿市值企业(附年榜TOP100详单)
  20. 曹旭东--关于无人驾驶

热门文章

  1. 查询快递物流筛选出被拦截单号标色记号
  2. 40 张图带你搞懂 TCP 和 UDP,android软件开发教程
  3. 将App通过XCode上传到AppStore 出现这个错误“An error occurred uploading to the iTunes Store”的解决方法
  4. python修改列表元素_python 3 基础之列表和列表添加元素、修改元素、查找元素、删除元素、排序、嵌套、取最值...
  5. 手写Promisify函数
  6. 幼儿教师需要掌握的计算机技巧,幼儿教师应掌握的五项教学技能!
  7. 2019高考江苏卷语文作文
  8. 决战职场,教你如何编织人际关系网(一)
  9. 基于STM32和阿里云的环境检测系统设计
  10. 团队作业-Beta版本发布