工欲善其事,必先利其器。在做一个项目时必定要先做好调试除错的预告在面向过程编程的时代都是以检测返回的错误代码来剖断错误,可是这种体例的错误谬误是假如编写某一操作的时辰可能呈现的错误代码(好比说硬件操作)太多,那么最终用户将会陷入倒无限无尽的检测代滤鱿脯可能会是这个样子
8 x! x) ?7 `/ |9 E; U1 Z
9 ~5 s$ _& {4 ]6 }. \( T# | UINT err=Functionxx(…);. X( Y1 a8 a( @& q! X, i+ j0 x, Z6 y
if(err==xxx)+ }7 Z1 F0 i' R5 @2 [6 Z& _
…- F# b% f: s: ?$ N
if(err==xxx)( S) c1 o! r) V4 \) I' C: e
…
5 Y: {; Z8 } V6 D3 d9 } …
$ l G! E! E1 s; C …
% p, r- C9 v/ @$ w- W
* f/ d2 P+ G: [% C; ^; ^. r 省略100行8 n+ k& C0 ~. ^
* S5 w/ j) b1 M5 P 只有这样轨范才能在呈现意外的时辰有所响应和恢复,可是因为错误措置太复杂了最终用户很可能这样
; h3 Q6 C$ ?. l- ^/ M; O$ D. q( }, q) Z3 J" t; N& b: p5 c8 V: |
if(Functionxx()!=SUCEEDED)
D9 P3 b' n! D8 H3 K8 ?( P( } exit(0);
6 g/ L! J: x8 |3 S: ]) g4 s
5 K; f# y7 N6 }' \1 G9 c5 R( v" F 这样某些可能可以恢复的操作也无法幸免了,(好比说收集毗连超时,终止运行过分度了吧,只要弹出个对话框就行了)
) D: s! V4 O) c0 o8 U' z
4 S9 L; E- |3 k2 B 在面向对象编程的时辰,不成否认,良多人仍然仍是这样排错的,其实各类面向对象的说话都供给了异常措置的手段(好比说Object Pascal,C++,本文以C++为例)0 x5 l3 C! _0 n: t/ t
+ _- {2 Y, a5 F6 U 下面是我的关于异常的一些使专心得
5 Y4 L( l7 ?. H: |0 t4 {0 Q" K9 c6 n6 {% {
对于各类用户来说,并不是每一种错误都是他关心的,不凡是小组开发的时辰好比某一模块是关于文件操作的,那么编写这个模块的轨范员只要注重关于文件操作失踪败的异常就行了,而收集模块的轨范员只要知道收集犯错的错误措置就行了,是以,我们可以界说一个这样的类2 ?4 ~0 T: u M
|9 t* A/ a/ b ?
class CBasicException1 ~' ?5 W7 k0 L' c: V
{
: C. H+ R0 E$ O0 B _ CBasicException(…);
& ]' H$ l$ _* g n5 h char* GetDescription();
5 {8 c8 u2 w, C. `6 C: h3 K. c UINT GetErrorCode();' U/ C# d9 B7 h' M/ Q
…) s( o7 P: v$ j! S _: n! {
};- a5 Z4 U+ n0 c: m7 y
$ ~* e7 U1 l2 Q5 a H7 S, V 然后再从这个类继续几个子类
: P/ h9 k+ p9 w) R& ]
z+ h& w+ g ^' I. Z CFileException,CNetException…
( J" ^+ Q9 r; A9 E' b; ^3 l+ y7 h& b" `9 K! ?/ L* g9 R
然后和具体某一类错误相关的具体的异常分袂从膳缦沔的类琅缦沔继续,好交锋件打开失踪败,空间不够等等 |