Java异常机制

上一篇 / 下一篇  2012-08-28 09:32:28 / 个人分类:Java

%\'ydo#jyS`mv:q[F0  Java异常(Exception)又称例外,是一种运行时错误。Java异常机制就是对于Java异常的处理方法,使用Java异常机制能提升程序的容错性,从而使程序更加健壮与安全。51Testing软件测试网s%ABp-u(Sb?C

,^b Q6Q;?0   java异常种类很多,常用的异常包括:算术异常类(ArithmeticException),空指针异常类 (NullPointerException),输入输出异常类(IOException),数组下标越界异常类 (ArrayIndexOutOfBoundsException)、类型转换异常类(ClassCastException)等。51Testing软件测试网8A;Q&z*]jJO"g Q

51Testing软件测试网`/aA%r9d*E*n:G+L&Z2M

  Java中常有如下三种异常处理方法:

4Yct0y~051Testing软件测试网:c!w0D$r/M

  1、使用try-catch-finally语句。try语句块放置可能发生异常的代码,catch语句块捕获这些代码产生的异常,finally语句块无论程序是否有异常发生,都会执行。

b^6PR$`051Testing软件测试网*unwm-t

  2、使用throws关键字抛出异常。若某个方法可能发生异常,但不想在当前方法中处理这个异常,那就可以利用throws关键字在该方法抛出异常,然后在调用该方法的代码中捕获该异常进行处理。

^1x:f]r(K051Testing软件测试网%[h kFqj*v%z(u(Tn

  3、自定义异常类与throw关键字。

,X@ME!`B9gC0

PA+v h+k-A$\/F*u8G0  关于自定义异常类的使用,分为如下几个步骤:51Testing软件测试网 D KW}yb&g

A{ me6?7tHD2O0  1)创建自定义异常类,利用继承思想51Testing软件测试网8P bM"A&~j%B~

:o2P~)d Ax?+O8K*q0  2)在方法中通过throw关键字抛出异常对象

5E8~QK)Q6|Q){$L,I0

Yr['o)L"s0  3)若在当前抛出异常的方法中处理,使用第一种方法,否则使用第二种方法

kt?w!b!J)z0

g/y a%?h"a:j0  第一种异常处理方法测试代码如下:51Testing软件测试网9U5L]&H+_,DT7]yP

/**51Testing软件测试网8SSH,Q&?&Mo
 *利用try-catch-finally语句块进行异常处理51Testing软件测试网4J&F"fp1Mnf|#r
 */51Testing软件测试网*m4b1| X_ ~7a]
public class ExceptionTest {51Testing软件测试网s? V k m0V-Fq \
 public static void main(String[] args) {51Testing软件测试网"?Y3T6n'SR2Rb
  try {
,InqMd/m @GuY0    int iNum = 5 / 0;
%@O!{"YjK}\2^0    System.out.println(iNum);
%\F E} ^ `0  } catch (Exception e) {51Testing软件测试网*n!_#UN1h3}F4S S,A
    e.printStackTrace();//指出异常的类型、性质、栈层次及出现程序中的位置51Testing软件测试网z[:M#I zGG
  } finally {
#?LFb;U0    System.out.println("第一种异常处理方法测试");
y$VO^#d7jm0  }51Testing软件测试网f ^p@;h;|,Hm@
 }51Testing软件测试网v v,DqK mF:Y W
}

`m bF9Ql.MqE0  运行结果如下所示:51Testing软件测试网4_$Vz a-}t3r }

51Testing软件测试网0wQl Pu n3sZ/f7or

  第二种异常处理方法测试代码如下:51Testing软件测试网1O~;p#{qV

/**
0o'Q Q1GO3h0 *利用关键字throws进行异常处理
4I k'{e q q0 */
9P`4g%f*l~;c(j,a0public class ExceptionTest1 {51Testing软件测试网$M0N,zU$oA(Tb j
 public static int divide(int iNum1, int iNum2) throws ArithmeticException {51Testing软件测试网0\ G7C%Kv p)O2to
   return iNum1 / iNum2;51Testing软件测试网ux%pgKE8O_
 }51Testing软件测试网#CY n3\ ?u4[*X
 public static void main(String[] args) {
8~~(\)^g r M{#nkqQ0  try {
1K7]"yR H`#a\AN0    int iNum = divide(5,0);51Testing软件测试网(@2n!i \9}/[
    System.out.println(iNum);51Testing软件测试网,w:Xo'OI
  } catch (ArithmeticException e) {
z:^|/{6vv0    e.printStackTrace();//指出异常的类型、性质、栈层次及出现程序中的位置
H V1B [1nr0  }51Testing软件测试网xl\2wi$am8e
 }51Testing软件测试网n+P L7?3l\
}

  运行结果如下所示:51Testing软件测试网^ J N3PK1XSv

2a*S.sP NF|!N!v051Testing软件测试网6G^b\)kU$H

  第三种异常处理方法测试代码如下:51Testing软件测试网E{M9w+Vi_

51Testing软件测试网 Pb*n/s$N&Z7g'I

51Testing软件测试网|G4L&c|)L kVe E$c"~

51Testing软件测试网(v!g6k-{ BgE(YK7j e%M

/**51Testing软件测试网 H&yTjo9Q)S
 *类描述:自定义的异常类,继承于Exception
@)k1A}Q:p9D0 */51Testing软件测试网/Zw7l8s\%H`(f
class MyException extends Exception {51Testing软件测试网wG)z0P2m5Ux:Y-z
 String message;51Testing软件测试网y/|:i9TFSx m
 public MyException(String errorMessage) {51Testing软件测试网KX9Y,x k\\2k
  this.message = errorMessage;51Testing软件测试网8u'D3yXTyoU2F
 }

)nZ Xx$}k[:@0

/]*|$EubIY2Nq0 public String getMessage() {//覆盖getMessage()方法51Testing软件测试网d6unl,K\KU CKS'B%\
  return message;
Tl!Fz"V)\g0 }
kN.rw1Q4J0}
51Testing软件测试网 js#v%|1h8`r

0t.eY._/e o0/**
{1YtC,P%r-j0 *自定义类MyException和throw关键字进行异常处理51Testing软件测试网:H ~]%BS(FX
 */51Testing软件测试网6~e b bZ7xP
public class ExceptionTest2 {
%`^ y!VR[e0 public static int divide(int iNum1, int iNum2) throws MyException {51Testing软件测试网$W{y#X9l kR3q!^1k
   if(0 == iNum2) {51Testing软件测试网#|f'G)G?ps
    throw new MyException("除数不能为零。");51Testing软件测试网j1B.O bc+\B;b
   }51Testing软件测试网7ah|rc-L0j9m
   return iNum1 / iNum2;
1u{0u"m T0 }
|aT[W3PS0 public static void main(String[] args) {
(JAU0q[2n2rc0  try {
(Fy"m@Ckh0    int iNum = divide(5,0);
TA H"Gjc0    System.out.println("计算结果是:" + iNum);
E^g,X3M }s7g0  } catch(MyException e) {
-NjBLPH6}F0    System.out.println(e.getMessage());
3h| o'm"z8@0  } catch(Exception e) {51Testing软件测试网-a(^j0S7v:OT]&E?oH
    System.out.println("程序发生了其他异常");
B.x}|7Vz;?0  }
@P1\?uD2\0 }51Testing软件测试网 R3{/A(t j/q1e
}
51Testing软件测试网!O7M7rXi1o

51Testing软件测试网+G+}K O5Pf\u?sc

  运行结果如下所示:

'M.s K1])KMW0

51Testing软件测试网I"t'oQF{%C+s9O6o

  总结:

+iLcjfH%ap:C1b4t0

  1、程序设计与开发中,需要考虑程序的异常,利用异常机制可以让程序更健壮与安全。

J&N$x Nw_F0

  2、异常处理不应用来考虑程序逻辑,主要避免程序运行时错误。

rn+]r [$]1ZM+y0

TAG:

 

评分:0

我来说两句

Open Toolbar