Java自定义异常

上一篇 / 下一篇  2012-09-14 09:30:18 / 个人分类:Java

51Testing软件测试网m:{D)y5b"jI

  Java异常机制可以保证程序更安全和更健壮。虽说Java类库已经提供很多可以直接处理异常的类,但是有时候为了更加精准地捕获和处理异常以呈现更好的用户体验,需要开发者自定义异常。本文就是探讨如何自定义异常以及使用自定义的异常。

](kz,A ^Ns0n051Testing软件测试网(|^;R g:Y1P K"@ T0L

  在进行程序开发的过程中,自定义异常遵循以下四个步骤:

5qz:[%c6r4H6Kh%i;h+}R051Testing软件测试网QE i0csh5j|S*~

  1)首先创建自定义异常类,语法格式:自定义异常类名 extends Exception。51Testing软件测试网 O9o*Z^ Qj-R:_P

J`3ds%V0[RK([0  2)在方法中通过关键字throw抛出异常对象。51Testing软件测试网Xs4n4mxg6sM

P'};X\jJ uF0  3)若是在当前抛出异常的方法中处理异常,可以用try-catch语句捕获并处理;若不是,在方法的声明处通过关键字throws指明要抛出给方法调用的异常。

L9T.ja9N _ap0

%@ o+BHAc"tJ0  4)在出现异常方法的调用中捕获并处理异常。51Testing软件测试网 @_ p_o:X

1]-F;l2Y7f\}0  接下来,通过一个简单的程序来说明自定义异常和使用自定义异常。

`+y"{ a:zur0

wgV2r9Y'y+i4f0  首先创建自定义异常类,代码如下:51Testing软件测试网.v,HB@y0L,tI;y

/**51Testing软件测试网v1n_0Mls'o@3\7j
 *<p>Titlt:自定义异常类NumeratorIsZeroException</p>
8P2s6I~L,c @q9B{G'l0 *<p>Description:分子为零的异常</p>
+CW dR1S$XX&[0 *<p>Copyright:copyright(c) 2012</p>51Testing软件测试网h]?#`-fQ
 *<p>Filename:NumeratorIsZeroException.java</p>51Testing软件测试网/N!rVQvK
 *@authorWang Luqing51Testing软件测试网V&`%E \0w u3k*W2F6V
 *@version1.051Testing软件测试网)fdX4B/XG`;N IJ
 */
a8fC_zqfaw0class NumeratorIsZeroException extends Exception51Testing软件测试网1{g7K)j ] i
{51Testing软件测试网aM S| ~/xP9KuR
 public NumeratorIsZeroException(String msg)
i ~9?5}-S m#E0 {
p;G.`5JqY0  super(msg);51Testing软件测试网1N8~V6Z)a+k8JhW2\N
 }51Testing软件测试网-w(JrKnl
}

aX7j`&@v1\0  接下来,使用自定义异常类,代码如下:51Testing软件测试网$E)n'E)Mm/l+Uu

/**
:p&n3r&D~p!q0 *<p>Titlt:设计类Number/p>
J*U F?$LK|.v0 *<p>Description:类中有除法计算方法</p>51Testing软件测试网$Du5RJw4n9aL)E
 *<p>Copyright:copyright(c) 2012</p>51Testing软件测试网6m |{V1l
 *<p>Filename:Number.java</p>
k Mm|O(cC0 *@authorWang Luqing51Testing软件测试网3X.l~|u
 *@version1.051Testing软件测试网 s;YC'~&HG:n^$T
 */51Testing软件测试网9g.WBpX
public class Number
0{@d;p9XmC0{51Testing软件测试网c!W#lkX X
 public int divition(int iNum1,int iNum2)throws NumeratorIsZeroException
Ox!NP{YFK0 {51Testing软件测试网 H3Q1ha-^"Zw
  if(0 == iNum2)51Testing软件测试网H S:y&Aj(o;EO%w7?
  {51Testing软件测试网~v4y$u,B{0[P8n1L
   throw new NumeratorIsZeroException("分子不能为零。");
|9I+s4uE6Mv0  }
$Z]3Hh:\0 
CAc [\Qx}0  return (iNum1/iNum2);51Testing软件测试网t;N:~8Vq*Q5~6J
 }
,Zm'uE*{ e+X~0}
/**
B~ nbz0 *<p>Titlt:设计类Test</p>
7|y.\TxI p0 *<p>Description:测试自定义的异常类</p>51Testing软件测试网(Bu4_^-_A:I*A/l;N
 *<p>Copyright:copyright(c) 2012</p>51Testing软件测试网Dm+X'Ed
 *<p>Filename:Test.java</p>51Testing软件测试网@BAIIddc,V]
 *@authorWang Luqing51Testing软件测试网+TnR_6t"FPt
 *@version1.051Testing软件测试网'hzx m"d\
 */51Testing软件测试网l%Ha"B#cO_&t
public class Test
])a+Ey6I1P\(b0{
/i,q f y1e G p FT0 public static void main(String[] args)
'zEe L,pPF0 {51Testing软件测试网$YD)}m:juh*Z
  Number num = new Number();
5g\RQ6b@'e"pF-|0 
+M${5\bT-?D!C.P'v0  try51Testing软件测试网xi%X]?K
  {
9gDS t&f }"J \0   System.out.println("商:" + num.divition(12,0));51Testing软件测试网L:| g+A2V+c.w%m`
  }
/] x5o1Ks#]0  catch(NumeratorIsZeroException e)51Testing软件测试网 e Kpbl9?e*W
  {
[L%y(vlFQ0   System.out.println(e.getMessage());
^'Kj%AB0   e.printStackTrace();51Testing软件测试网q[:Q7o+mCb D8T
  }
1L\8W}mM\0  catch(Exception e)51Testing软件测试网 q;`$qSU G
  {51Testing软件测试网,\0EjXA`C1E^
   System.out.println(e.getMessage());51Testing软件测试网rjYz@2|
   e.printStackTrace();
+M ^C K|+@B0  }51Testing软件测试网X9u1GAO4l|
 }51Testing软件测试网3`/\#Uq,nM_&FZ
}
51Testing软件测试网 ?/ywR"\WB#r6K

  运行结果如下所示:51Testing软件测试网 p `zcwC"t3^&c

Y.j x)zA!P`{0  分子不能为零。51Testing软件测试网&S} Q9p m1j#|6lt

ieya5VH1d uq5l0  NumeratorIsZeroException:分子不能为零。

U:C){s(]^051Testing软件测试网m.~Wn)c,v&QxJ

  at Number.divition(Number.java:15)

K M+lIx8t051Testing软件测试网tH*Nh1J:Qx8Q2W

  at Test.main(Test.java:17)

uJ#y h;m%R0

D%l@\"ke1nX$G0  总结:

/@q\&c"O[}'X H l\051Testing软件测试网_#fAQ^y-W8q

  1)根据上述代码关键点归纳,自定义异常类,标识可能抛出的异常,捕获和处理异常。51Testing软件测试网 |qFR7n3g,ih

4vU N)Y&sUZ0  2)getMessage():输出异常的信息;printStackTrace():输出导致异常的详细信息。51Testing软件测试网C1oK zsKG&w){#?N

*hxB b'^'C Xt&I0  3)设计和利用好自定义异常,使得异常的处理更灵活和精准。51Testing软件测试网U%Z`D9d+x0Lv@


TAG:

 

评分:0

我来说两句

Open Toolbar