Java语言入门 -- 第八章 Java的“异常”

2016-02-19 13:09 1 1 收藏

图老师小编精心整理的Java语言入门 -- 第八章 Java的“异常”希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - 编程语言 】

第八章 Java的“异常”

                    

  “ 异 常” 指 的 是 程 序 运 行 时 出 现 的 非 正 常 情 况。 在 用 传统 的 语 言 编 程 时, 程 序 员 只 能 通 过 函 数 的 返 回 值 来 发 出错 误 信 息。 这 易 于 导 致 很 多 错 误, 因 为 在 很 多 情 况 下 需 要知 道 错 误 产 生 的 内 部 细 节。 通 常, 用 全 局 变 量errno来 存 储“ 异 常” 的 类 型。 这 容 易 导 致 误 用, 因 为 一 个errno的 值 有 可 能在 被 处 理 ?reg; 前 被 另 外 的 错 误 覆 盖 掉。 即 使 最 优 美 的C语言 程 序, 为 了 处 理“ 异 常” 情 况, 也 常 求 助 于goto语 句。 Java对“ 异 常” 的 处 理 是 面 向 对 象 的。 一 个Java的Exception是 一 个 描 述“ 异 常” 情 况 的 对 象。 当 出 现“ 异 常” 情 况 时, 一 个Exception对象 就 产 生 了, 并 放 到 产 生 这 个“ 异 常” 的 成 员 函 数 里。

8.1 基础

  Java的“ 异 常” 处 理 是 通 过5个 关 键 词 来 实 现 的:try, catch, throw, throws和finally。 用try 来 执 行 一 段 程 序, 如 果 出 现“ 异常”, 系 统 抛 出(throws?copy; 一 个“ 异 常”, 你 可 以 通 过 它 的类 型 来 捕 捉(catch?copy; 它, 或 最 后(finally?copy; 由 缺 省 处理 器 来 处 理。 下 面 是“ 异 常” 处 理 程 序 的 基 本 形 式:

  try { //程 序 块 } catch (ExceptionType1 e) { // 对ExceptionType1的处 理 } catch (ExceptionType2 e) { // 对ExceptionType2的 处 理 throw(e); //再 抛 出 这 个“ 异 常” } finally { }

8.2 "异 常” 的 类 型

  在“ 异 常” 类 层 次 的 最 上 层 有 一 个 单 独 的 类 叫 做Throwable。这 个 类 用 来 表 示 所 有 的“ 异 常” 情 况。 每 个“ 异 常” 类 型 都是Throwable的 子 类。Throwable有 两 个 直 接 的 子 类。 一 类 是Exception,是 用 户 程 序 能 够 捕 捉 到 的“ 异 常” 情 况。 我 们 将 通 过 产 生它 的 子 类 来 创 建 自 己 的“ 异 常”。 另 一 类 是Error, 它 定 义 了那 ?copy; 通 常 无 法 捕 捉 到 的“ 异 常”。 要 谨 慎 使 用Error子 类,因 为 它 们 通 常 会 导 致 灾 难 性 的 失 败。 在Exception中 有 一 个 子类RuntimeException, 它 是 程 序 运 行 时 自 动 地 对 某 ?copy; 错 误作 出 反 应 而 产 生 的。

8.3 不 捕 捉“ 异 常”

  “ 异 常” 对 象 是Java在 运 行 时 对 某 ?copy;“ 异 常” 情 况 作出 反 应 而 产 生 的。 例 如, 下 面 这 个 小 程 序 包 含 一 个 整 数 被0除的“ 异 常”。

  class Exc0 { public static void main(String args[]) { int d = 0; int a = 42/d; } }

  当Java执 行 这 个 除 法 时, 由 于 分 母 是0, 就 会 构 造 一 个“ 异常” 对 象 来 使 程 序 停 下 来 并 处 理 这 个 错 误 情 况, 在 运 行 时“ 抛 出”(throw?copy; 这 个“ 异 常”。 说“ 抛 出” 是 因 为 它 象 一个 滚 烫 的 马 铃 薯, 你 必 须 把 它 抓 住 并 立 即 处 理。 程 序 流 将会 在 除 号 操 作 符 处 被 打 断, 然 后 检 查 当 前 的 调 用 堆 栈 来查 找“ 异 常”。 一 个“ 异 常” 处 理 器 是 用 来 立 即 处 理“ 异 常” 情 况 的。 在 这 个 例 子 里, 我 们 没 有 编 一 个“ 异 常” 处 理 器,所 以 缺 省 的 处 理 器 就 发 挥 作 用 了。 缺 省 的 处 理 器 打 印Exception的字 符 ?reg; 值 和 发 生 “ 异 常” 的 地 点。 下 面 是 我 们 的 小 例子 的 输 出。

  C:java Exc0 java.lang.arithmeticException: / by zero at Exc0.main(Exc0.java:4)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)8.4 try与catch

  通 常 我 们 希 望 自 己 来 处 理“ 异 常” 并 继 续 运 行。 可 以 用try来指 定 一 块 预 防 所 有“ 异 常” 的 的 程 序。 紧 跟 在try程 序 后 面,应 包 含 一 个catch子 句 来 指 定 你 想 要 捕 捉 的“ 异 常” 的 类 型。例 如, 下 面 的 例 子 是 在 前 面 的 例 子 的 基础上 构 造 的, 但 它包 含 一 个try程 序 块 和 一 个catch子 句。

  class exc1 { public static void main(string args[]) { try { int d = 0; int a = 42 / d; } catch (arithmeticexception e) { system.out.println("division by zero"); } } }

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  catch子 句 的 目 标 是 解 决“ 异 常” 情 况, 把 一 ?copy; 变 量 设到 合 理 的 状 态, 并 象 没 有 出 错 一 样 继 续 运 行。 如 果 一 个 子程 序 不 处 理 某 个“ 异 常”, 则 返 到 上 一 级 处 理, 直 到 最 外一 级。

8.5 多 个catch子 句

  

来源:https://www.tulaoshi.com/n/20160219/1603115.html

延伸阅读
《黑手党2》图文流程攻略第八章 《黑手党2》图文流程攻略第八章 (Chapter 8)   早上一大早被吵醒,楼下Joe的小弟向这里扔石头叫Vito,我们穿好衣服下楼找Joe。卡车上一车烟,我们开车去指定地点卖。 到达地点后会有不少人来买,有蓝色,红色,白色三种,听顾客要哪种就拿哪种,几小时之后我们赚了三百多了,来个一辆警车,本来...
《刺客信条2》图文攻略及心得第八章 第八章 1485年 跟踪目标 然后设法潜入教堂 这边会发现那人要暗杀一位叫Doge Mocenigo的主教并派人取代   但问题是主教不好接近,于是想到达文西的鸟点子,当鸟人试飞 但飞行器飞不远,后来达文西想到热气上升的原理,于是ezio 得先除掉屋顶上大部份的弓箭兵,然后再派手下去点火制造热气上升能 &...
《最终幻想13》详细攻略手记:第八章 第八章 歓楽都市 ノーチラス 歓楽都市ノーチラス/観光艇ステーション 奖杯Instrument of Shame入手~~ 剧情后转到香草一行~~走盘调整装备和OPTIMA后做个记录~~NPC还真多= =~~四处看看对话后来到目的地发生剧情~~继续前进来到目的地发生剧情~~ 歓楽都市ノーチラス/フェスティバロード 四处看...
x360《镜之边缘》视频攻略 第八章 第八章 《66663》平衡设计师退出团队 或转向镜之边缘2     最近,《66663》的核心游戏平衡设计师Alan Kertz在其个人Twitter(ID:Demize99)上宣布了他不再是《66663》开发团队中的一份子了。     当你听到这个消息之请按不要有任何恐怖,Alan Kertz谈及到:“...
标签: 手机游戏
《星际传奇》第八章精英难度关卡通关技巧详解 《星际传奇》中,第八章精英关卡相对于普通关卡有了更高的难度,那么第八章精英关卡该怎么过,三星该怎么拿,有什么好的方法技巧呢,下面一起来看看吧。 一,杀意 与普通的杀意一样,沿途的机枪塔、导弹塔、电塔依旧是主要的伤害来源,在有杂兵和炮塔的前提下,优先清除炮塔则是优先要...

经验教程

68

收藏

99
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部