You are on page 1of 9

Assertion

Assertion l g
nh ngha: Assertion l mt on code cho php 1 chng
trnh t kim tra chnh n trong qu trnh thc thi kt qu tr
v mang gi tr true hoc false. Nu gi tr ca assertion l
true chng trnh hot ng ng , nu false l pht hin li
trong chng trnh.
Lp trnh vin s dng assertion m t cch thc cc on
code hot ng nh th no, chng thc cc rng buc bn
trong h thng.
Mt assertion thng nhn 2 i s: 1 biu thc lun l kt qu
tr v l true hoc false cho bit chng trnh chy sai hay ng.
Mt i s l 1 messages thng bo cho lp trnh vin bit li
ca chng trnh nu kt qu l false.
Cc assertion thng c tch hp sn trong nhiu ngn ng
nh java , C++..
VD: trong java dng assertion nh sau:
Assert 0 <= index && index < length : Out of memory;
Trong C++ cung cp macro assert tng t nh hm nhng
khng c tham s message thng bo li.
Vd: assert(0 <= index && index < length);
Tuy nhin trong c++ chng ta c th dng macro t nh
ngha 1 assertion nh VD sau:
#define assert( condition, message) {
if( !condition) {
LogError ( Assertion failed: , #condition, message);
exit ( EXIT_FAILURE);
}
}
K thut x l li
Assertion dng pht hin cc li khng nn xy ra trong
chng trnh . Lm sao m chng ta x l cc li m mong i
chng s xy ra? Ty vo tng trng hp m chng ta c cc
phng php sau:
Tr v cc gi tr c bit khng gy nh hng n chng trnh
Thay th 1 phn trong cc gi tr ng k tip
Tr v gi tr ti thi im trc
Thay th bng 1 gi tr gn vi gi tr hp l nht
Ghi cc cnh bo ra file
Tr n on m ngun pht sinh li
Gi n mt i tng chuyn v x l li
Hin ln thng bo li ti on m ngun pht sinh ra li .
Tt h thng



X l cc assertion b tht bi
Khi assertion b tht bi, u tin l n s truyn thng
bo li n ngi dng bng nhiu cch (in ra mn hnh,
message box, file log...). Khi cc thng bo chun on
c hin th. C nhiu cch chn la tip theo:
Kt thc chng trnh
Cho php thc thi tip chng trnh
Qung mt ngoi l quay v on code b li.
Cho php kt hp 1 hay nhiu cch trn.
Li ch ca assertions
Vai tr ca cc assertion l xc nh li trong chng
trnh.
Mt li ch ln na l gip vic kim th ng dng c
hiu qu hn.
Tuy nhin assertion ch c hiu qu khi c thc thi
trong on m ngun cha n.
Gii hn ca assertions
Bn thn 1 assertion cng c th tn ti cc li v do 1
trong cc nguyn nhn sau:
Thng bo li khng c thc.
Khng thc hin c 1 bo co li tn ti trong chng trnh
Not being side-effect free
Assertion c th tc ng n hiu nng ca chng trnh:
Chim nhiu thi gian thc thi
Nm gi vng nh
Cc assertion c th lm cho vic kim th chng trnh kh
khn hn.

You might also like