[TOC]
參考教程
IBM --- Java 編程簡(jiǎn)介,第 2 部分
Java 異常
異常的分類(lèi)
Throwable 類(lèi)是所有異常和錯(cuò)誤的超類(lèi)狡恬,下面有 Error 和 Exception 兩個(gè)子類(lèi)分別表示錯(cuò)誤和異常
-
檢查性異常
程序員無(wú)法預(yù)見(jiàn)的異常
從程序語(yǔ)法角度講是必須進(jìn)行處理的異常措伐,如果不處理撒会,程序就不能編譯通過(guò)
-
運(yùn)行時(shí)異常
程序員可預(yù)見(jiàn)的異常,編譯時(shí)可忽略
屬于不檢查異常,程序中可以選擇捕獲處理挠轴,也可以不處理
-
錯(cuò)誤(Error)
脫離程序員控制的錯(cuò)誤
Error 類(lèi)型通常是災(zāi)難性的致命錯(cuò)誤,不是程序可以控制的
異常的產(chǎn)生和處理
Java 通過(guò)面向?qū)ο蟮姆椒▉?lái)處理異常耳幢。在一個(gè)方法的運(yùn)行過(guò)程中岸晦,如果發(fā)生了異常,則這個(gè)方法會(huì)產(chǎn)生代表該異常的一個(gè)對(duì)象睛藻,并把它交給運(yùn)行時(shí)的系統(tǒng)启上,運(yùn)行時(shí)系統(tǒng)尋找相應(yīng)的代碼來(lái)處理這一異常。
把生成異常對(duì)象店印,并把它提交給運(yùn)行時(shí)系統(tǒng)的過(guò)程稱(chēng)為拋出(throw)異常冈在。運(yùn)行時(shí)系統(tǒng)在方法的調(diào)用棧中查找,直到找到能夠處理該類(lèi)型異常的對(duì)象按摘,這一個(gè)過(guò)程稱(chēng)為捕獲(catch)異常包券。
try-catch 語(yǔ)句用于捕獲并處理異常,finally 語(yǔ)句用于在任何情況下(除特殊情況外)都必須執(zhí)行的代碼炫贤,throw 語(yǔ)句用于拋出異常溅固,throws 語(yǔ)句用于聲明可能會(huì)出現(xiàn)的異常
如果代碼在 try 內(nèi)部執(zhí)行一條 System.exit() 語(yǔ)句,則應(yīng)用程序?qū)⒔K止而不會(huì)執(zhí)行 finally
異常的使用原則
異常處理不應(yīng)用來(lái)控制程序的正常流程照激,其主要作用是捕獲程序在運(yùn)行時(shí)發(fā)生的異常并進(jìn)行相應(yīng)處理发魄。
- 在當(dāng)前方法聲明中使用 try catch 語(yǔ)句捕獲異常
- 一個(gè)方法被覆蓋時(shí),覆蓋它的方法必須拋出相同的異沉├或異常的子類(lèi)
- 如果父類(lèi)拋出多個(gè)異常励幼,則覆蓋方法必須拋出那些異常的一個(gè)子集,而不能拋出新異常
Java 自定義異常
-
所有異常都必須是 Throwable 的子類(lèi)口柳、
如果希望寫(xiě)一個(gè)檢查性異常類(lèi)苹粟,則需要繼承 Exception 類(lèi)
如果想寫(xiě)一個(gè)運(yùn)行時(shí)異常類(lèi),那么需要繼承 RuntimeException 類(lèi)
自定義異常類(lèi)一般包含兩個(gè)構(gòu)造方法:一個(gè)是無(wú)參的默認(rèn)構(gòu)造方法跃闹,另一個(gè)構(gòu)造方法以字符串的形式接收一個(gè)定制的異常消息嵌削,并將該消息傳遞給超類(lèi)的構(gòu)造方法
Java 輸入輸出流
分類(lèi)
- 流的方向:輸入流和輸出流
- 數(shù)據(jù)單位:字節(jié)流和字符流
- 功能:節(jié)點(diǎn)流和處理流
Java輸入輸出流
- Java 中所有輸入流都是 InputStream 抽象類(lèi)(字節(jié)輸入流)和 Reader 抽象類(lèi)(字符輸入流)的子類(lèi)
- Java 中所有輸出流類(lèi)都是 OutputStream 抽象類(lèi)(字節(jié)輸出流)和 Writer 抽象類(lèi)(字符輸出流)的子類(lèi)
Java 系統(tǒng)流
每個(gè) Java 程序運(yùn)行時(shí)都帶有一個(gè)系統(tǒng)流毛好,系統(tǒng)流對(duì)應(yīng)的類(lèi)為 java.lang.System。Sytem 類(lèi)封裝了 Java 程序運(yùn)行時(shí)的 3 個(gè)系統(tǒng)流苛秕,分別通過(guò) in肌访、out 和 err 變量來(lái)引用。
File 類(lèi)
Java 中的 File 類(lèi)是文件和目錄路徑名的抽象形式
-
Java File 類(lèi)是
java.io
包中唯一代表磁盤(pán)文件本身的對(duì)象艇劫。File 類(lèi)表示處理文件和文件系統(tǒng)的相關(guān)信息吼驶。File 類(lèi)不具有從文件讀取信息和向文件寫(xiě)入信息的功能,它僅描述文件本身的屬性店煞。File 類(lèi)實(shí)現(xiàn)了文件/目錄的查看蟹演、創(chuàng)建、刪除等方法
動(dòng)態(tài)讀寫(xiě)文件內(nèi)容
- 動(dòng)態(tài)讀取需要用到 Java 中的 RandomAccessFile 類(lèi)顷蟀,該類(lèi)中有一個(gè)文件指針用于標(biāo)識(shí)當(dāng)前流的讀寫(xiě)位置酒请,這個(gè)指針可以向前或者向后移動(dòng)。
- RandomAccessFile 類(lèi)提供了讀寫(xiě)數(shù)據(jù)的一些方法
字節(jié)流的讀寫(xiě)
字節(jié)輸入流
InputStream 類(lèi)及其子類(lèi)的對(duì)象
- ByteArrayInputStream: 字節(jié)數(shù)組輸入流
- FileInputStream : 文件輸入流
字節(jié)輸出流
OutputStream 類(lèi)及其子類(lèi)的對(duì)象
- ByteArrayOutputStream: 字節(jié)數(shù)組輸出流
- FileOutputStream : 文件輸出流
字符流的讀寫(xiě)
字符輸入流
Reader 類(lèi)及其子類(lèi)的對(duì)象
- FileReader : 字符文件輸入流
- BufferedReader : 字符緩沖區(qū)輸入流
字符輸出流
Writer 類(lèi)及其子類(lèi)的對(duì)象
- FileWriter : 字符文件輸出流
- BufferedWriter : 字符緩沖區(qū)輸出流