JAVA上機(jī)實(shí)驗(yàn)new輸入

上傳人:san****019 文檔編號(hào):22321292 上傳時(shí)間:2021-05-24 格式:PPT 頁(yè)數(shù):33 大小:426KB
收藏 版權(quán)申訴 舉報(bào) 下載
JAVA上機(jī)實(shí)驗(yàn)new輸入_第1頁(yè)
第1頁(yè) / 共33頁(yè)
JAVA上機(jī)實(shí)驗(yàn)new輸入_第2頁(yè)
第2頁(yè) / 共33頁(yè)
JAVA上機(jī)實(shí)驗(yàn)new輸入_第3頁(yè)
第3頁(yè) / 共33頁(yè)

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《JAVA上機(jī)實(shí)驗(yàn)new輸入》由會(huì)員分享,可在線閱讀,更多相關(guān)《JAVA上機(jī)實(shí)驗(yàn)new輸入(33頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、第 6章 輸 入 /輸 出 和 異 常 處 理 在 實(shí) 際 的 應(yīng) 用 開(kāi) 發(fā) 中 經(jīng) 常 會(huì) 遇 到 數(shù) 據(jù) 輸 入 /輸 出 的需 求 , 這 樣 的 需 求 在 Java中 使 用 I/O流 來(lái) 實(shí) 現(xiàn) 。 6.1 I/O流 一 個(gè) 好 的 程 序 語(yǔ) 言 , 完 善 的 輸 入 輸 出 功 能 是 必 不可 少 的 。 在 Java中 將 不 同 來(lái) 源 和 目 標(biāo) 的 數(shù) 據(jù) 統(tǒng) 一 抽 象 為 流 ,通 過(guò) 對(duì) 流 對(duì) 象 的 操 作 來(lái) 完 成 I/O功 能 。 Java中 的 流 很 靈 活 , 可 以 連 接 到 各 種 不 同 的 源 或目 標(biāo) , 如 磁 盤(pán) 文 件 、

2、鍵 盤(pán) ( 輸 入 設(shè) 備 ) 、 顯 示 器( 輸 出 設(shè) 備 ) 、 網(wǎng) 絡(luò) 等 。 6.1.1 流 的 層 次 Java中 所 有 的 I/O都 是 通 過(guò) 流 來(lái) 實(shí) 現(xiàn) 的 , 可 以 將流 理 解 為 連 接 到 數(shù) 據(jù) 目 標(biāo) 或 源 的 管 道 , 可 以 通過(guò) 連 接 到 源 的 流 從 源 當(dāng) 中 讀 取 數(shù) 據(jù) , 或 通 過(guò) 連接 到 目 標(biāo) 的 流 向 目 標(biāo) 中 寫(xiě) 入 數(shù) 據(jù) 。 根 據(jù) 流 的 方 向 可 以 將 其 分 為 兩 類(lèi) : 輸 入 流 和 輸出 流 。 用 戶 可 以 從 輸 入 流 中 讀 取 信 息 , 向 輸 出流 中 寫(xiě) 信 息 。 根 據(jù)

3、 流 處 理 數(shù) 據(jù) 類(lèi) 型 的 不 同 也 可 以 將 其 分 為 兩類(lèi) : 字 節(jié) 流 與 字 符 流 。 Java中 I/O流 是 由 java.io包 來(lái) 實(shí) 現(xiàn) 的 , 其 中 的 類(lèi) 大 致 分為 輸 入 和 輸 出 兩 大 部 分 。 在 java.io包 最 頂 層 包 含 子 類(lèi) 較 多 的 兩 個(gè) 類(lèi) 是InputStream和 OutputStream。 這 兩 個(gè) 類(lèi) 均 為 抽 象 類(lèi) 。java.io包 中 的 很 多 類(lèi) 都 是 從 這 兩 個(gè) 類(lèi) 繼 承 而 來(lái) 的 . 6.1.2 輸 入 流 和 輸 出 流 前 面 介 紹 過(guò) , Java的 I/O類(lèi) 庫(kù) 分

4、 成 輸 入 和 輸 出 兩 大部 分 。 所 有 InputStream和 Reader的 派 生 類(lèi) 都 有 一 個(gè) 繼 承下 來(lái) 的 , 能 讀 取 單 個(gè) 或 byte數(shù) 組 的 read()方 法 。 所 有 OutputStream和 Writer的 派 生 類(lèi) 都 有 一 個(gè)write()方 法 。 6.1.3 字 節(jié) 流 和 字 符 流 根 據(jù) 流 處 理 數(shù) 據(jù) 類(lèi) 型 的 不 同 也 可 以 將 其 分 為 兩 類(lèi) :字 節(jié) 流 與 字 符 流 , 下 面 列 出 了 這 兩 種 流 的 不 同 之處 。 字 節(jié) 流 :字 節(jié) 流 以 字 節(jié) 為 基 本 單 位 來(lái) 處 理

5、 數(shù) 據(jù)的 輸 入 /輸 出 , 一 般 都 用 于 對(duì) 二 進(jìn) 制 數(shù) 據(jù) 的 讀 寫(xiě) ,如 聲 音 、 圖 像 等 。 字 符 流 :字 符 流 以 字 符 為 基 本 單 位 來(lái) 處 理 數(shù) 據(jù) 的 輸入 和 輸 出 , 一 般 都 用 于 對(duì) 文 本 類(lèi) 型 數(shù) 據(jù) 的 讀 寫(xiě) ,如 文 本 文 件 、 網(wǎng) 絡(luò) 中 發(fā) 送 的 文 本 信 息 等 。 雖 然 文 本 數(shù) 據(jù) 也 可 以 看 作 二 進(jìn) 制 數(shù) 據(jù) , 但 一 般 采用 字 符 流 處 理 文 本 數(shù) 據(jù) 比 采 用 字 節(jié) 流 效 率 更 高 ,也 更 方 便 。 6.1.4 隨 機(jī) 存 取 文 件 流 前 面 介 紹

6、 的 都 是 順 序 訪 問(wèn) 的 流 , 在 Java還 有 一 種支 持 隨 機(jī) 訪 問(wèn) 的 流 RandomAccessFile。 這 個(gè) 類(lèi) 的實(shí) 例 支 持 同 時(shí) 進(jìn) 行 的 讀 /寫(xiě) 操 作 。 一 個(gè) 隨 機(jī) 存 取 文件 好 比 存 儲(chǔ) 在 文 件 系 統(tǒng) 中 的 一 個(gè) 大 “ 數(shù) 組 ” 。 該“ 數(shù) 組 ” 有 一 個(gè) 文 件 指 針 , 輸 入 操 作 從 該 指 針 所指 示 的 地 方 開(kāi) 始 讀 取 數(shù) 據(jù) , 每 讀 一 個(gè) 字 節(jié) , 指 針后 移 一 個(gè) 字 節(jié) 。 如 果 一 個(gè) 隨 機(jī) 存 取 文 件 以 讀 /寫(xiě) 方式 創(chuàng) 建 , 也 可 對(duì) 其 進(jìn)

7、行 輸 出 ( 寫(xiě) ) 操 作 。 輸 出 操作 也 從 文 件 指 針 所 指 的 地 方 寫(xiě) 字 節(jié) , 并 將 指 針 置于 所 寫(xiě) 字 節(jié) 之 后 。 當(dāng) 輸 出 操 作 超 過(guò) 了 “ 數(shù) 組 ” 的末 尾 , 將 導(dǎo) 致 文 件 的 擴(kuò) 大 。 文 件 指 針 可 用getFilePointer()方 法 讀 取 , 用 seek()方 法 設(shè) 置 。 6.2 I/O流 的 使 用 本 節(jié) 將 具 體 介 紹 如 何 使 用 這 些 流 類(lèi) , 包 括 標(biāo) 準(zhǔn) 的I/O輸 出 、 基 本 的 I/O流 、 過(guò) 濾 流 、 文 件 的 隨 機(jī) 讀寫(xiě) 和 流 的 分 割 。 6.2.1

8、 標(biāo) 準(zhǔn) 的 I/O流 下 面 首 先 介 紹 標(biāo) 準(zhǔn) 的 I/O流 的 使 用 方 法 。 在 Java語(yǔ) 言 中 , 鍵 盤(pán) 用stdin表 示 , 監(jiān) 視 器 用 stdout表 示 。 它 們 均 被 封 裝 在 System類(lèi) 的 類(lèi)變 量 in和 out中 , 分 別 對(duì) 應(yīng) 于 System.in和 System.out。 事 實(shí) 上 ,類(lèi) 變 量 in和 out分 別 屬 于 類(lèi) InputStream和 PrintStream, 只 是 由 于InputStream和 PrintStream不 能 用 new()方 法 直 接 創(chuàng) 建 , 所 以 才 在System類(lèi) 中 聲

9、 明 為 如 下 的 3個(gè) 類(lèi) 變 量 。 public static InputStream in public static PrintStream out public static PrintStream err 6.2.2 基 本 的 I/O流 1 InputStream類(lèi) InputStream類(lèi) 是 以 字 節(jié) 為 單 位 的 輸 入 流 。 數(shù) 據(jù) 來(lái) 源 可 以 是鍵 盤(pán) , 也 可 以 是 諸 如 Internet這 樣 的 網(wǎng) 絡(luò) 環(huán) 境 。 這 個(gè) 類(lèi) 可作 為 許 多 輸 入 類(lèi) 的 基 類(lèi) 。 InputStream是 一 個(gè) 抽 象 類(lèi) , 因 此不 能 建 立

10、它 的 實(shí) 例 , 用 戶 只 能 使 用 它 的 子 類(lèi) 。 注 意 , 大 多數(shù) 輸 入 方 法 都 拋 出 了 IOException異 常 , 因 此 如 果 程 序 中 調(diào)用 了 這 些 輸 入 方 法 , 就 必 須 捕 獲 和 處 理 IOException異 常 。 6.2.2 基 本 的 I/O流 2 OutputStream類(lèi) OutputStream是 與 InputStream相 對(duì) 應(yīng) 的 輸 出 流 類(lèi) , 它 具 有輸 出 流 的 所 有 基 本 功 能 。 由 于 OutputStream實(shí) 現(xiàn) 輸 出 流 的許 多 方 法 與 InputStream流 的 方

11、 法 相 對(duì) 應(yīng) , 下 面 僅 簡(jiǎn) 單 列 出與 輸 入 流 類(lèi) 相 對(duì) 應(yīng) 的 方 法 。 public abstract void write(int b ) throws IOException: 向 流 中 寫(xiě) 入 一 個(gè) 字 節(jié) 。 public void write(byte b) throws IOException:向 流 中 寫(xiě) 入 一 個(gè) 字 節(jié) 數(shù) 組 。 public void write(byte b,int off,int len) throws IOException: 在 從 數(shù) 組 中 的 第 off個(gè) 位 置 開(kāi) 始 的len個(gè) 位 置 上 寫(xiě) 入 數(shù) 據(jù)

12、 。 public void flush ( ) throws IOException: 清 空流 并 強(qiáng) 制 將 緩 沖 區(qū) 中 所 有 數(shù) 據(jù) 寫(xiě) 入 到 流 中 。 public void close ( ) throws IOException: 關(guān) 閉 流 對(duì) 象 。 6.2.2 基 本 的 I/O流 3 PipedInputStream和 PipedOutputStream類(lèi) 管 道 流 用 于 線 程 之 間 的 通 信 。 一 個(gè) PipedInputStream必 須連 接 一 個(gè) PipedOutputStream, 而 且 一 個(gè)PipedOutputStream也 必

13、須 連 接 一 個(gè) PipedInputStream。 這兩 個(gè) 類(lèi) 用 于 實(shí) 現(xiàn) 與 Unix中 的 管 道 相 似 的 管 道 流 。PipedInputStream實(shí) 現(xiàn) 管 道 的 輸 入 端 , 而PipedOutputStream用 于 實(shí) 現(xiàn) 管 道 的 輸 出 端 。 PipedInputStream類(lèi) 從 管 道 中 讀 取 數(shù) 據(jù) 時(shí) , 這 個(gè) 管 道 數(shù) 據(jù)是 由 PipedOutputStream類(lèi) 寫(xiě) 入 的 。 因 此 , 在 使 用PipedInputStream類(lèi) 之 前 , 必 須 將 它 連 接 到PipedOutputStream類(lèi) 。 可 以 在 實(shí)

14、 例 化 PipedInputStream類(lèi)時(shí) 建 立 這 個(gè) 連 接 , 或 者 調(diào) 用 Connect()方 法 建 立 連 接 。PipedInputStream中 包 含 用 于 讀 數(shù) 據(jù) 的 底 層 方 法 , 同 時(shí) 也 提 供 了 讀 數(shù) 據(jù) 的 高 層 接 口 。 6.2.2 基 本 的 I/O流 4 SequenceInputStream類(lèi) SequenceInputStream類(lèi) 是 InputStream類(lèi) 的 一 個(gè) 子 類(lèi) 。 使 用 這 個(gè)類(lèi) 可 以 將 兩 個(gè) 獨(dú) 立 的 流 合 并 為 一 個(gè) 邏 輯 流 。 合 并 后 的 流 中 的 數(shù) 據(jù)按 照 在 各

15、個(gè) 流 中 指 定 的 順 序 讀 出 。 第 一 個(gè) 流 結(jié) 束 時(shí) , 使 用 無(wú) 縫 連接 的 方 式 開(kāi) 始 從 第 二 個(gè) 流 中 讀 取 數(shù) 據(jù) 。 下 面 是 一 個(gè) 使 用 SequenceInputStream類(lèi) 的 例 子 , 代 碼 片 段 如 下 。 1 InputStream is1 = new FileInputStream(file1.dat); 2 InputStream is2 = new FileInputStream(file2.dat); 3 SequenceInputStream sis = new SequenceInputStream(is1,is

16、2); 4 / 合 并 兩 個(gè) 流 5 for(;) 6 int data = sis.read( ); 7 if (data = = -1) break; 8 6.2.3 過(guò) 濾 流 從 前 面 的 介 紹 可 以 知 道 , 過(guò) 濾 流 FilterInputStream和FilterOutputStream分 別 是 InputStream和 OutputStream的子 類(lèi) , 而 且 它 們 也 都 是 抽 象 類(lèi) 。 FilterInputStream類(lèi) 和FilterOutputStream類(lèi) 都 重 寫(xiě) 了 超 類(lèi) InputStream和OutputStream的 方 法 。

17、 FilterInputStream和 FilterOutputStream為 讀 寫(xiě) 處 理 數(shù) 據(jù)的 過(guò) 濾 流 定 義 接 口 。 其 子 類(lèi) 則 進(jìn) 一 步 實(shí) 現(xiàn) 接 口 和 方 法 。 這些 子 類(lèi) 有 以 下 幾 種 。 DataInputStream類(lèi) 和 DataOutputStream類(lèi) BufferedInputStream和 BufferedOutputStream類(lèi) LineNumberInputStream類(lèi) PushbackInputStream類(lèi) 6.2.4 文 件 隨 機(jī) 讀 寫(xiě) 當(dāng) 程 序 把 一 個(gè) RandomAccessFile對(duì) 象 與 一 個(gè) 文

18、件關(guān) 聯(lián) 時(shí) , 程 序 從 文 件 定 位 指 針 指 定 的 位 置 開(kāi) 始 讀寫(xiě) 數(shù) 據(jù) , 并 且 把 所 有 數(shù) 據(jù) 當(dāng) 成 基 本 數(shù) 據(jù) 類(lèi) 型 來(lái) 操作 。 使 用 RandomAccessFile除 了 可 以 讀 寫(xiě) 文 件 中 任 意位 置 的 字 節(jié) 外 , 還 可 以 讀 寫(xiě) 文 本 和 Java的 基 本 數(shù)據(jù) 類(lèi) 型 。 6.2.5 流 的 分 割 流 的 分 割 是 由 StreamTokenizer類(lèi) 實(shí) 現(xiàn) 的 。 該 類(lèi) 把一 個(gè) 流 的 內(nèi) 容 劃 分 成 若 干 個(gè) token單 位 , 一 次 可 以讀 寫(xiě) 一 個(gè) token。 StreamToke

19、nizer類(lèi) 用 于 將 任 何 InputStream分 割為 一 系 列 “ 記 號(hào) ( Token) ” 。 6.3 對(duì) 象 的 序 列 化 Java的 對(duì) 象 序 列 化 用 于 將 一 個(gè) 實(shí) 現(xiàn) 了Serializable接 口 的 對(duì) 象 轉(zhuǎn) 換 成 一 組 byte, 這 樣以 后 要 用 這 個(gè) 對(duì) 象 時(shí) 候 , 就 能 把 這 些 byte數(shù) 據(jù) 恢復(fù) 出 來(lái) , 并 據(jù) 此 重 新 構(gòu) 建 那 個(gè) 對(duì) 象 了 。 這 一 點(diǎn) 甚 至 在 跨 網(wǎng) 絡(luò) 的 環(huán) 境 下 也 是 如 此 , 這 就 意味 著 序 列 化 機(jī) 制 能 自 動(dòng) 補(bǔ) 償 操 作 系 統(tǒng) 方 面 的

20、差 異 。也 就 是 說(shuō) , 可 以 在 Windows機(jī) 器 上 創(chuàng) 建 一 個(gè) 對(duì) 象 ,序 列 化 之 后 , 再 通 過(guò) 網(wǎng) 絡(luò) 傳 到 Unix機(jī) 器 上 , 然 后在 那 里 進(jìn) 行 重 建 , 而 不 用 擔(dān) 心 在 不 同 的 平 臺(tái) 上 數(shù)據(jù) 是 怎 樣 表 示 的 , byte順 序 怎 樣 , 或 者 別 的 什 么細(xì) 節(jié) 。 6.3.1 存 儲(chǔ) 對(duì) 象 Java序 列 化 技 術(shù) 可 以 將 一 個(gè) 對(duì) 象 的 狀 態(tài) 寫(xiě) 入 一 個(gè)byte流 里 , 并 且 可 以 從 其 他 地 方 把 該 byte流 里 的數(shù) 據(jù) 讀 出 來(lái) , 重 新 構(gòu) 造 一 個(gè) 相 同

21、的 對(duì) 象 。 這 種 機(jī)制 允 許 將 對(duì) 象 通 過(guò) 網(wǎng) 絡(luò) 進(jìn) 行 傳 播 , 并 可 以 隨 時(shí) 把對(duì) 象 存 儲(chǔ) 到 數(shù) 據(jù) 庫(kù) 、 文 件 等 系 統(tǒng) 里 。 Java的 序 列化 機(jī) 制 是 RMI、 EJB、 JNNI等 技 術(shù) 的 技 術(shù) 基 礎(chǔ) 。 并 非 所 有 的 Java類(lèi) 都 可 以 序 列 化 , 為 了 使 指 定 的類(lèi) 可 以 實(shí) 現(xiàn) 序 列 化 , 必 須 使 該 類(lèi) 實(shí) 現(xiàn) 接 口java.io.Serializable。 需 要 注 意 的 是 , 該 接 口什 么 方 法 也 沒(méi) 有 。 實(shí) 現(xiàn) 該 類(lèi) 只 是 簡(jiǎn) 單 的 標(biāo) 記 該 類(lèi)準(zhǔn) 備 支 持

22、 序 列 化 功 能 。 6.3.2 對(duì) 象 的 序 列 化 Java1.1以 后 添 加 了 對(duì) 象 序 列 化 機(jī) 制 , 可 以 把 實(shí) 現(xiàn)了 Serializable接 口 的 對(duì) 象 序 列 化 。 Serializable接 口 中 沒(méi) 有 定 義 任 何 方 法 , 只 是 一個(gè) 特 殊 的 標(biāo) 記 , 用 來(lái) 告 訴 Java 編 譯 器 , 這 個(gè) 對(duì) 象參 加 了 序 列 化 的 協(xié) 議 , 可 以 把 它 序 列 化 。 因 此 一 個(gè) 類(lèi) 實(shí) 現(xiàn) Serializable接 口 時(shí) , 并 不 需 要實(shí) 現(xiàn) 任 何 針 對(duì) 該 接 口 的 方 法 , 6.3.3 對(duì) 象

23、 序 列 化 中 的 一 些 問(wèn) 題 ( 1) 性 能 問(wèn) 題 為 了 序 列 化 類(lèi) A的 一 個(gè) 實(shí) 例 對(duì) 象 , 所 需 保 存 的 全 部 信 息 如 下 。 與 此 實(shí) 例 對(duì) 象 相 關(guān) 的 全 部 類(lèi) 的 元 數(shù) 據(jù) (metadata)信 息 ; 因?yàn)?繼 承 關(guān) 系 , 類(lèi) A的 實(shí) 例 對(duì) 象 也 是 其 任 一 父 類(lèi) 的 對(duì) 象 。 因 而 ,需 要 將 整 個(gè) 繼 承 鏈 上 的 每 一 個(gè) 類(lèi) 的 元 數(shù) 據(jù) 信 息 , 按 照 從 父到 子 的 順 序 依 次 保 存 起 來(lái) 。 ( 2) 版 本 信 息 當(dāng) 用 readObject()方 法 讀 取 一 個(gè)

24、序 列 化 對(duì) 象 的 byte流 信 息時(shí) , 會(huì) 從 中 得 到 所 有 相 關(guān) 類(lèi) 的 描 述 信 息 以 及 示 例 對(duì) 象 的 狀態(tài) 數(shù) 據(jù) ; 然 后 將 此 描 述 信 息 與 其 本 地 要 構(gòu) 造 的 類(lèi) 的 描 述 信息 進(jìn) 行 比 較 , 如 果 相 同 則 會(huì) 創(chuàng) 建 一 個(gè) 新 的 實(shí) 例 并 恢 復(fù) 其 狀態(tài) , 否 則 會(huì) 拋 出 異 常 。 這 就 是 序 列 化 對(duì) 象 的 版 本 檢 測(cè) 。 6.4 文 件 管 理 前 面 的 章 節(jié) 介 紹 了 Java中 的 各 種 I/O流 , 在 使 用I/O流 的 過(guò) 程 中 很 多 情 況 下 源 與 目 標(biāo) 都

25、 是 文 件 。 因此 , 本 節(jié) 將 介 紹 在 Java中 如 何 獲 取 目 錄 、 文 件 的信 息 以 及 對(duì) 目 錄 、 文 件 進(jìn) 行 管 理 。 6.4.1 File類(lèi) 簡(jiǎn) 介 Java中 專 門(mén) 提 供 了 一 個(gè) 表 示 目 錄 與 文 件 的 類(lèi) java.io.File, 通 過(guò) 其 可 以 獲 取 文 件 、 目 錄 的 信息 , 對(duì) 文 件 、 目 錄 進(jìn) 行 管 理 。 File類(lèi) 一 共 提 供 了 4個(gè) 構(gòu) 造 器 , 6.4.2 使 用 File類(lèi) 下 面 的 例 子 創(chuàng) 建 MyFile文 件 夾 , 接 著 在 MyFile文件 夾 下 創(chuàng) 建 Chil

26、dFile.txt文 件 , 并 向 文 件 中 寫(xiě) 入字 符 串 。 從 本 例 中 可 以 看 出 , 通 過(guò) 使 用 java.io包 中 提 供 的File類(lèi) 可 以 方 便 地 對(duì) 文 件 、 目 錄 進(jìn) 行 管 理 。 6.5 異 常 處 理 開(kāi) 發(fā) 核 心 業(yè) 務(wù) 代 碼 只 占 了 20% 30%的 時(shí) 間 , 而 用于 開(kāi) 發(fā) 容 錯(cuò) 代 碼 的 時(shí) 間 卻 高 達(dá) 70% 80%, 這 大 大降 低 了 開(kāi) 發(fā) 效 率 。 Java中 提 供 的 異 常 處 理 機(jī) 制 ,可 以 在 一 定 程 度 上 解 決 這 個(gè) 問(wèn) 題 。 6.5.1 異 常 處 理 概 述 Jav

27、a中 定 義 了 很 多 異 常 類(lèi) 。 每 個(gè) 異 常 類(lèi) 都 代 表 了一 種 或 多 種 運(yùn) 行 錯(cuò) 誤 , 異 常 類(lèi) 中 包 含 了 該 運(yùn) 行 的錯(cuò) 誤 信 息 和 處 理 錯(cuò) 誤 的 方 法 等 內(nèi) 容 。 每 當(dāng) Java程 序 運(yùn) 行 過(guò) 程 中 發(fā) 生 一 個(gè) 可 識(shí) 別 的 運(yùn) 行錯(cuò) 誤 時(shí) , 即 產(chǎn) 生 一 個(gè) 異 常 。 Java采 取 “ 拋 出 -捕 獲 ” 的 方 式 1、 try和 catch捕 獲 異 常 try 可 能 出 現(xiàn) 異 常 的 代 碼 catch(異 常 類(lèi) 型 1 引 用 ) 異 常 類(lèi) 型 1的 處 理 代 碼 catch(異 常 類(lèi) 型

28、 n 引 用 ) 異 常 類(lèi) 型 n的 處 理 代 碼 見(jiàn) 例 題 6-8 2、 finall語(yǔ) 句 塊 在 任 何 情 況 下 都 將 保 證 執(zhí) 行 。 finall finall塊 的 代 碼 見(jiàn) 例 題 6-9 6.5.2 異 常 的 層 次 結(jié) 構(gòu) 當(dāng) 異 常 發(fā) 生 時(shí) , Java會(huì) 將 該 異 常 包 裝 成 一 個(gè) 異 常 類(lèi) 的 對(duì) 象 , 并 將其 引 用 作 為 參 數(shù) 傳 遞 給 相 應(yīng) 的 catch語(yǔ) 句 , 這 樣 在 catch語(yǔ) 句 中 就可 以 對(duì) 這 個(gè) 異 常 對(duì) 象 進(jìn) 行 操 作 。 1 捕 獲 異 常 : 是 由 外 界 因 素 產(chǎn) 生 的 ,

29、并 且 是 可 以 恢 復(fù) 的 。 說(shuō) 明 : 在 調(diào) 用 可 能 拋 出 捕 獲 異 常 的 方 法 ( 或 構(gòu) 造 器 ) 時(shí) , 必 須 編 寫(xiě) 處 理異 常 的 代 碼 , 否 則 編 譯 不 通 過(guò) 。 Java類(lèi) 庫(kù) 中 有 一 個(gè) java.lang.Throwable類(lèi) , 繼 承自 java.lang.Object類(lèi) , 是 所 有 異 常 類(lèi) 的 超 類(lèi) 。 見(jiàn) 例 題 6-13 例 題 6-14 2 未 捕 獲 異 常 : Error類(lèi) 及 子 類(lèi) 以 及 RuntimeException類(lèi) 及 其 子 類(lèi) 。( 1) 繼 承 自 Error的 類(lèi) 一 般 代 表 由 硬

30、 件 運(yùn) 行 失 敗 導(dǎo) 致 的嚴(yán) 重 錯(cuò) 誤 。 如 內(nèi) 存 耗 盡 。 程 序 不 能 從 Error中 恢 復(fù) 。( 2) RuntimeException類(lèi) 的 子 類(lèi) 通 常 是 指 一 些 程 序 運(yùn)行 時(shí) 錯(cuò) 誤 引 起 的 異 常 。 如 空 引 用 異 常 , 可 以 通 過(guò) 編 譯 ,但 運(yùn) 行 時(shí) 會(huì) 拋 出 NullPointException異 常 。( 3) 未 捕 獲 異 常 可 以 不 被 處 理 , 也 可 以 進(jìn) 行 處 理 。 見(jiàn) 例 題 6-15 6.5.3 自 定 義 異 常 有 時(shí) 系 統(tǒng) 中 已 有 的 異 常 類(lèi) 型 不 能 滿 足 使 用 的

31、需 要 。這 時(shí) , 就 需 要 拋 出 自 定 義 的 異 常 對(duì) 象 。 1 創(chuàng) 建 自 己 的 異 常 類(lèi) ( 1) 充 當(dāng) 捕 獲 異 常 的 角 色 。 ( 2) 格 式 :class 類(lèi) 名 extends Exception 或 其 他 捕 獲 異 常 類(lèi) 類(lèi) 體 ( 3) printStackTrace()、 toString()、 getMessage()方 法 。 分 別 返 回 異 常 調(diào) 用 棧 的 信 息 、 異 常 對(duì) 象 的 字符 串 表 示 、 異 常 對(duì) 象 中 攜 帶 的 出 錯(cuò) 信 息 。 見(jiàn) 例 題 6-162 使 用 自 定 義 的 異 常 類(lèi) 格 式 : throw new 自 定 義 異 常 類(lèi) 見(jiàn) 例 題 6-17.

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!