关于Java中的try-catch-finally语句和return
上一篇 / 下一篇 2012-08-21 09:15:25 / 个人分类:Java
AN.a3t|D2M0 第一:return语句并不是函数的最终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回)
z y hP7dSOz051Testing软件测试网vt%lB p pK K I第二:finally里面不建议放return语句,根据需要,return语句可以放在try和catch里面和函数的最后。可行的做法有四:51Testing软件测试网3\/vE ZZ9[w i
1S qG;f@q[[ ~@%Y(k0 1、return语句只在函数最后出现一次。
c$Ois"wy i.J051Testing软件测试网T;Pd%NG2、return语句仅在try和catch里面都出现。51Testing软件测试网7lrv1Q4xp
P1Uc@ W'o5m0 3、return语句仅在try和函数的最后都出现。51Testing软件测试网W4u;Q"Yn{(j} B.\
7O(XD2m2S s0 4、return语句仅在catch和函数的最后都出现。51Testing软件测试网O%y5b{(~}!iK
51Testing软件测试网P8T;?/wI qn P$?R注意,除此之外的其他做法都是不可行的,编译器会报错。51Testing软件测试网y#Dh/F%`#x1Zj
Ql|y2gf)q0 (1)如果程序运行到try成功时可以返回结果,则采用方法2。(见下面的例子test0_1,在那个例子中,方法2和4都是可行的,但是推荐方法2?)
[](c,Y"D0b*[/N-^f0U9f@"Ux o0 (2)如果程序运行到catch时(即中途出错时)无需再继续执行后面的代码了,则采取方法4;(见下面例子中的test0,在那个特殊的例子中,只能采取方法4)
-oo!t3C} M051Testing软件测试网/k*V6~QRq2\)|l[(3)如果程序运行到try或catch时还需要继续执行后面的代码,则采取方法1(见下面的例子test0_2,该例子只能采用方法1)。
X[{&Gm0F*f9Mih/U0_5w0o;J'MikZ0public classTest{51Testing软件测试网3V2Ow2jF[8J"}
51Testing软件测试网 Vv&Cb*l1Keh public static void main(String[] args) {51Testing软件测试网l8^hJy
System.out.println("=============test1==================");
n"n$yi&d&f6@~;[0 System.out.println(test1());
;Kd#U#L8b"QZ*O(GQ"V0 System.out.println("===============================");51Testing软件测试网;vP-VKN2W
Jr*B'l
m.a:q0 System.out.println("=============test1_1==================");51Testing软件测试网0p0K9~Vclv5B9`}
System.out.println(test1_1());51Testing软件测试网l;q*hw5Ft:p[d
System.out.println("===============================");51Testing软件测试网D%P ywI/EfH
A2H*Tl's_QD0 System.out.println("\n============test2===================");51Testing软件测试网;jH5R7y7F5q\J
System.out.println(test2());
%^X[j2V,B0 System.out.println("===============================");
System.out.println("\n============test2_1===================");51Testing软件测试网 KtMn;v'ul
System.out.println(test2_1());
8Q\F2\*z0 System.out.println("===============================");51Testing软件测试网:jn7_Bi}B
System.out.println("\n============test3===================");
G-p,Ve
P4s|@\#L0 System.out.println(test3());51Testing软件测试网1?gJP
U/T3t
System.out.println("===============================");51Testing软件测试网s:j2~yvT
System.out.println("\n============test3_1===================");
`gOc%D&r-c0 System.out.println(test3_1());
$ZL{
Q g!g"L0 System.out.println("===============================");51Testing软件测试网$Cu2v x*R P
}51Testing软件测试网 CE;RP`qV*{
public static String test0() {
)E5XPi$~[Lb/z+T0 String a;
5b,|h+q/t'p;okb2m0 int b;
^)?\"?x f-W5k+P0 try{
@syq:[0 b = 8/0;51Testing软件测试网+z,S T2ZcmI
}catch(Exception e){51Testing软件测试网
Q"wB.Z$^.i&h
return null;
E&] I7_ {#Bn{wT#s0 }
z+I$|&Ry0 a = String.valueOf(b);51Testing软件测试网\:e1~ T
[D
return a+b;
4|(Lz"v?Wm0 }51Testing软件测试网;^eBiK5u
51Testing软件测试网|Fg@!Q#X:] {]
@
public static String test0_1() {51Testing软件测试网9r_$Wj1I IV
String a;51Testing软件测试网([$OM8t`3A
int b;
/\tTWH#kEq0 try{
g~ `hZ0 b = 8/0;
.X
Z u+Z7G6i&l0 a = String.valueOf(b);
T([Z
dy0 return a+b;
3x[H|Y7^.x)Fj9E7O[0 }catch(Exception e){
u,S^!X?0 return null;
o&Rg ?}0 }