https://blog-static.cnblogs.com/files/z1174299705/shCoreRDark.css https://blog-static.cnblogs.com/files/z1174299705/shThemeDefault.css

Java异常处理

这 些 异 苒 的 是 因 为 用 户 宿 誤 引 起 , 有 的 是 程 孛 宿 誤 引 起 的 , 还 苒 它 一 些 是 因 为 物 理 宿 誤 引 起 的 : 
要 脲 」 a “ 异 喲 处 是 如 何 工 作 的 , 你 需 羅 以 下 三 种 类 型 的 异 喲 : 
椧 查 性 异 常 : 亻 表 的 查 异 喲 是 甲 户 宿 誤 或 河 题 引 起 的 异 喲 汶 是 程 孛 仄 法 见 的 : 口 0 开 一 个 不 存 在 件 
时 , 一 ^ 异 喲 就 发 生 了 , 这 些 异 喲 在 译 时 不 能 發 简 望 《 也 忽 : 
运 行 时 异 常 : 运 行 时 异 喲 是 可 能 發 程 孛 民 兔 的 异 喲 : 与 查 异 喲 反 运 行 时 异 喲 可 以 在 译 时 被 忽 : 
错 : 宿 誤 不 是 异 喲 而 是 离 程 孛 民 老 的 河 题 : 宿 誤 在 代 码 中 通 喲 被 忽 : 口 , 兰 栈 溢 土 时 , 一 个 宿 誤 就 发 生 了 
它 们 在 译 查 不 到 的 :

 

Exception 
java. lang. Exception 
Exception Throwable 
Java 
Error 
JVM *to, 
IOException RuntimeException 
Throwab 
xc epti o n 
Java ) ,

 

: ExcepTest.java 
import java.io.*; 
public class ExcepTest{ 
public static void main (String 
try { 
int at) = new intC2); 
element three 
}catch (ArrayIndexOutOf30undsException 
System. out. throw 
of the block");

 

try 
file — 
new FileInputStream(fiIeName); 
x = (byte) file. read() 
}catch (IOException i) 
i. printStackTrace() 
return -I; 
f) //Not valid! 
f. printStackTrace() 
return -I;

 

throws/throw 
throws 
throw 
RemoteException : 
import java.io.*; 
public class className 
public void deposit(double amount) throws RemoteException 
// Method implementation 
throw new RemoteException(); 
// Remainder of class definition 
throws

 

451.1±12 , RemoteException InsuffcientFundsException: 
import java.io.*; 
public class className 
public void withdraw(double amount) throws RemoteException, 
InsufficientFundsException 
// Method implementation 
// Remainder of class definition

 

注 意 下 面 事 项 
catch 不 老 生 立 于 呵 存 在 : 
在 try'/catch 后 面 添 a 块 卉 三 到 虽 老 1 生 求 的 : 
呵 代 码 后 不 能 既 没 catch 块 没 丽 a 块 。 
t 掣 catch 满 na 块 之 间 不 能 添 任 回 代 码 :

 

声 明 自 定 义 异 常 
在 妇 “ 中 你 可 以 自 定 义 异 喲 : 写 自 已 的 异 喲 类 时 需 记 住 下 面 的 几 点 : 
所 有 异 喲 都 它 须 是 Th “ b 的 子 类 。 
如 果 希 里 写 一 ^ 查 异 喲 类 则 需 要 继 承 Exc 巳 ption 类 。 
如 果 亻 0 写 一 个 运 行 时 异 喲 类 那 么 -要继 承 RuntimaExcaption*. 
可 以 像 下 面 这 棰 定 义 自 已 的 异 喲 类 
[ I 55 myException extends Exception{ 
只龌 承 Exception 类 来 创 过 的 异 喲 类 是 柃 异 喲 类 。 
下 面 的 InsuffciantFundsExcaption 类 是 甲 户 乏 义 的 异 喲 类 
一 ^ 异 喲 类 和 其 它 亻 可 类 一 棰 , 包 有 壹 量 和 方 法 。 
它 继 承 自 Exception.

 

JVM FIJip: NullPaintarExcaptian ArraylndaxOutOfBaundsExcaptia 
n ClassCastExceptian 
IllagaIArgumantExcaptian IllagaIStataExcaptian

 

名 词 解 释 : 
性 异 堂 不 处 理 译 不 能 i 过 
. 2 、 韭 苣 性 异 堂 不 处 理 编 译 可 Ai 过 , 如 果 有 抛 土 直 扌 到 到 控 制 台 
. 3 、 运 行 时 异 堂 就 是 韭 苣 性 异 堂 
. 4 、 韭 运 行 时 异 堂 就 是 苣 性 异 堂

 

异 堂 使 甲 可 0 循 下 面 的 原 贝 J. 
在 当 前 方 氵 去 被 盖 时 覆 他 的 方 法 必 须 抛 土 相 同 的 异 堂 或 异 堂 的 子 类 
2 : 在 当 前 方 法 声 明 中 使 甲 try 一 cat 语 笥 楠 获 异 堂 
3 : 如 果 父 类 抛 土 多 个 异 堂 。 则 盖 方 法 必 须 抛 土 那 异 堂 的 一 个 子 不 苣 土 新 异 堂 . 
为 我 所 望 ! 卜 个 前 | . 2

 

Throwable 
VirtulMachineError 
Error 
A WTError 
10 Exception 
Exception 
RuntimeException 
StackOverFlowError 
OutOtMemoryError 
EOFExce (ion 
FileNotFoundException 
An-ithmeticException 
MissingResourceException 
ClassNotFoundException 
NullPointcrF.xception 
Illegal ArgumentException 
An-aylndexOutOtBoundsException 
UnkownTypeException

 

从 大 体 来 分 异 堂 为 两 块 : 
1 、 errormEi* 是 指 礻 呈 孛 无 氵 处 理 的 宿 誤 表 示 应 甲 程 孛 运 行 时 土 现 的 大 i 巽 . 1 歹 vm 运 行 时 
土 现 的 0 凵 t 劊 Memo 雪 Error 以 及 S ket 程 时 土 现 的 端 囗 占 用 等 《 呈 孛 无 氵 过 处 理 的 宿 誤 . 
2 、 Exceptionm-*-* : 异 堂 可 分 为 运 行 时 异 堂 跟 编 译 异 堂 
1 ) 运 行 时 异 堂 即 R 凵 ntim 巳 E 跹 ept ℃ n “ 思 之 类 的 异 堂 . 这 类 异 在 代 码 写 的 时 候 不 窨 被 译 器 
0 
所 陆 测 土 来 。 是 可 以 不 需 要 被 」 甫 获 但 是 《 呈 孛 员 也 可 以 据 需 要 i 茌 行 楠 获 抛 土 . 堂 见 的 
RUNtimeExceptionfi. NullpointException ( 空 扌 旨 礻 十 异 堂 ) ClassCastException ( 类 型 转 扌 曼 异 堂 ) 
陌 dexO 重 0 《 30 凵 ndsE 跹 ept ℃ n ( 《 且 齐 。 《 ! 堂 ) 等 . 
2 ) 缩 译 异 堂 R 凵 nt 《 m 巳 E 跹 ept ℃ n 以 外 的 异 堂 . 这 类 异 堂 在 编 译 时 编 译 器 窨 憷 示 需 楠 获 如 果 不 
0 
i 茌 行 楠 获 则 编 译 i 巽 . 堂 见 译 异 堂 有 IOException ( 流 传 输 异 堂 ) SQLException ( 数 据 幞 作 
异 堂 ) 等 . 
3 、 旧 va 处 理 异 堂 的 机 制 : 抛 土 异 堂 以 及 楠 获 异 堂 。 一 个 方 法 所 苣 到 甫 握 的 异 堂 。 一 定 是 」 ava 代 码 在 显 
斤 抛 土 的 异 堂 . 筒 望 地 说 。 异 堂 忘 是 完 被 扌 0 土 。 后 被 」 甫 握 的 . 
4 、 t 酊 ow 跟 t 酊 Ows 的 区 别 
0 throws Exception { 
0u011 匚 u010 test 
「 0 n 巴 Exception(); 
从 上 面 这 一 段 代 码 可 以 明 显 的 音 土 两 者 的 区 别 . t 酊 Ows 表 亍 一 个 方 法 声 明 可 苣 土 一 个 异 堂 。 t 酊 ow 表 
丁 此 处 抛 土 一 个 已 过 叟 的 异 堂 ( 可 § 过 叟 需 继 承 E 跹 ept ℃ n 。 也 可 」 “ a § 己 土 的 异 堂 类 )

 

}catch (Exception e) 
is begin" 
return 
is begin"); 
catch is begin 
finally is begin

 

0 音 如 下 代 码 : 
待 捕 代 码 
} 匚 t 匚 h (Exception 已 ) 
System.out.println("catch is begin 
} fIn 11y { 
Syst 巴 m . out . 0 「 IntIn ( " f n 11y is b (') ; 
在 0 代 码 中 输 土 貊 果 a 是 一 一 样 的 。 然 而 返 回 的 是 ret 凵 rn 2 ; 原 因 很 明 显 。 就 是 执 行 了 ally 后 已 经 
return 了 。 所 以 cat 里 面 的 ret 凵 rn 不 被 执 行 到 . 也 就 是 说 ally 永 远 都 窨 在 cat 的 ret 凵 rn 前 被 执 行 . 
( 这 个 是 面 试 经 堂 问 到 的 问 题 哦 ! ) 
6 、 对 于 异 堂 的 楠 获 不 应 该 笕 得 方 便 而 将 几 个 异 堂 台 成 一 个 E 跹 ept ℃ ni 茌 行 楠 获 。 比 如 有 10 的 异 堂 跟 
SQLä5**, 这 样 完 金 不 同 的 两 个 异 堂 应 该 分 开 处 理 ! 而 且 在 cat 里 处 理 异 堂 的 时 候 不 要 筒 望 的 
eprintStackTrace(), 而 是 0 该 进 行 岸 细 的 处 理 . 比 如 进 行 conso 它 打 印 详 或 者 j 茌 行 日 志 记 .

 

posted @ 2018-04-01 20:34  张俊余  阅读(131)  评论(0编辑  收藏  举报