1,不要简单的用printStackTrace把异常打出来,而不进行处理,注意,printStackTrace并不是处理异常
5 [6 x9 \9 V2 `3 j5 k/ g: T 8 d5 A+ c* L; k2 Y+ O8 x1 K
2,要catch具体的异常,而不是总的抛出一个Exception,而是要分IOException等。
% ?5 K% y3 z% \8 k+ k- O % ~- ? j" m" p3 |$ e5 K# x+ R
3,处理Exception的时候要把处理信息写得详细点/ v. q& ]/ \/ @
7 F# p" ~/ r6 p; ~0 O. U& P 4,善于使用finally,比如一些db的close操作等,要在finally中来操作,确保能close
( w0 S2 b6 }9 |
8 X4 _4 z. j% \8 J 下面这段代码就问题多多。仔细想想。5 ~% P. a4 T9 B- c5 G, h* a' a
/ L, Q/ I; F; [) H 1.OutputStreamWriter out = …/ `' y* Y$ Q7 l7 n3 \
3 U2 }1 D1 d1 I+ d/ h& s 2.java.sql.Connection conn = …5 H% c I# G. ~6 v/ d9 G& O* k
* l8 z$ L2 Y9 T8 J/ l) ?9 {& d 3.try { // ⑸
' ?* U8 K3 r s2 n8 x* Q) y % ?; W' C% y/ C- t
4. Statement stat = conn.createStatement();' q! k8 o$ |! K3 b5 t2 ?: \
5 h* X7 S& S# n+ N$ N; k% `0 }3 v 5. ResultSet rs = stat.executeQuery(
6 Z0 e+ O! k6 ~: s$ }$ [4 l3 b( I5 _ 5 h f) K+ n. D- c9 e6 D
6. "select uid, name from user");, h$ t* f' O5 R. ?, h
. ~ f/ C3 N6 a! n) e3 A3 p
7. while (rs.next())9 `; G. n6 X w4 ~- w
' A3 ]$ f6 T0 X' e 8. {$ P! f: u" {6 i
1 s8 D' d9 M. L! w6 ~5 r
9. out.println("ID:" + rs.getString("uid") // ⑹
+ o: m1 {* s/ W5 u4 @ i & I- g: b2 ]% p! b5 b e
10. ",姓名:" + rs.getString("name"));9 r3 C% G* I+ E
9 K; L6 k2 P9 S9 [9 k* o5 { 11. }" H+ R+ D' ^: [6 N$ v" I
% g ]4 L$ N" d1 R* r8 R" z% t
12. conn.close(); // ⑶* _/ J5 g# m9 t7 S) V
, l) N* b2 S* d6 S& [2 X 13. out.close();
& Q* k+ I3 X0 O) ~+ o2 \; e u) N6 G1 k/ |/ a h5 G$ U
14. }$ } l8 p+ g V. \1 \5 [
- Z2 Y- f0 ~" s9 W' `5 e+ n- j
15. catch(Exception ex) // ⑵
% x! Y9 j$ r8 ~5 P , H. N5 m+ L% x/ m+ I- ~) ^! c
16. {
+ r3 T z3 K* X3 v0 j5 c
- X4 B$ [/ K7 }. R 17. ex.printStackTrace(); //⑴,⑷
% e8 R. x1 w O* \1 o! k/ y # W8 i" t, l/ o2 |( U9 U9 Q
18. } |