52.1.3异常处理 /*0*/msg List[i]. no=i; strcpy(msg List[1]. msg, "Unkonwn error"); 1++, /*1*/msg List[i]. no=i; strcpy(msg List[i]. msg. "The parameters Out of range);1++, /*2*/msgList[i]. no-=1; strcpy(msgList[i]. msg, The parameters illegal"); i++ /*3*/msgList[i]. no=1; strcpy(msgList[i]. msg, The memory space low): i++ /*4*/msgList[i]. no=i; strcpy(msg List [i]. msg,"Not found ) i++ en 全局的出错代码表 errMessageList extern TErrMessagelist errMessagelist char *Getmessage(into) if(no<0 no >=CNST MaxNumErrMessage) return Null return msgList no. msg
11 §2.1.3 异常处理 /* 0*/ msgList[i].no=i; strcpy(msgList[i].msg, "Unkonwn error"); i++; /* 1*/ msgList[i].no=i; strcpy(msgList[i].msg, "The parameters Out of range"); i++; /* 2*/ msgList[i].no=i; strcpy(msgList[i].msg, "The parametersillegal"); i++; /* 3*/ msgList[i].no=i; strcpy(msgList[i].msg, "The memory space low"); i++; /* 4*/ msgList[i].no=i; strcpy(msgList[i].msg, "Not found"); i++; len = i; }; char *GetMessage(int no) { if (no<0 || no >= CNST_MaxNumErrMessage) return NULL; return msgList [no].msg; }; }; 全局的出错代码表errMessageList extern TErrMessageList errMessageList;
52.1.3异常处理 定义一个可用的异常处理类 TExcepComm class TExcep Comm public C int errNo char errMessage[CNST SizeErr Message TExcep Comm(int mErrNo errNo= mErrNo strcpy(err Message, errMessageList GetMessage(errNo)) 12
12 §2.1.3 异常处理 • 定义一个可用的异常处理类TExcepComm class TExcepComm { public: int errNo; char errMessage[CNST_SizeErrMessage]; TExcepComm (int mErrNo) { errNo = mErrNo; strcpy (errMessage, errMessageList.GetMessage(errNo)); } };
§214下标选择器 TIndex selector是一个字符串形式的下标选择器 IndexSelector: =Index scope (IndexScope ","Indexselector) Index Scope::=INTEGER OINTEGER?"INTEGER?) INTEGER - +) DIGITS DIGITS: =DIGIT( DIGIT DIGITS) DIGIT::=01234516789 13
13 §2.1.4 下标选择器 • TIndexSelector是一个字符串形式的下标选择器 IndexSelector ::=IndexScope|(IndexScope "," IndexSelector) IndexScope ::= INTEGER |( INTEGER? "_" INTEGER?) INTEGER ::=("-"| "+")? DIGITS DIGITS ::=DIGIT |( DIGIT DIGITS) DIGIT ::= 0|1|2|3|4|5|6|7|8|9
52.1.4下标选择器 合法的下标选择器 5 8 1.23.-1-3 34.2.78.10
14 §2.1.4 下标选择器 • 合法的下标选择器 5 1_ _8 _ 1, 2 1, 2_3, -1_-3 3_4, 2, 7_8, 10_
52.1.4下标选择器 TIndex selector类的定义 struct TSelectorltem long lower long upper; class TIndex selector TSelectorltem room [CNST Sizelndex selector int last visitedltem int Load FromArray (tselectorltem *se, int n, long maxldx) long Standardize(void); 15
15 §2.1.4 下标选择器 • TIndexSelector类的定义 struct TSelectorItem { long lower; long upper; }; class TIndexSelector { TSelectorItem room[CNST_SizeIndexSelector]; int lastVisitedItem; int LoadFromArray (TSelectorItem *se, int n, long maxIdx); long Standardize(void);