![]() |
|
|
第 八 章 Java的" 异 常"
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除 的" 异 常"。 C:>java Exc0 java.lang.arithmeticException: / by zero at Exc0.main(Exc0.java:4) 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"); } } } catch子 句 的 目 标 是 解 决" 异 常" 情 况, 把 变 量 设 到 合 理 的 状 态, 并 上一页12 下一页
上一篇:java 的多线程入门 下一篇:Java语言的输入输出操作
|