有一个有用的函数ResetLastError()
明确设置_LastError
为零。其次,每次调用函数还有一个副作用,因为它也将变量GetLastError()
设置为零。_LastError
无论哪种方式,嵌入(环绕)一个部分是一种常见的做法,其中一些错误状态需要相应地处理,正确的是:
// -------------------------------------------- // START_________________________
GetLastError(); // implicit pre-reset _LastError
ResetLastError(); // explicit pre-reset _LastError
bool an_OK_flag = OrderModify( ... ); // XTO call w ex-post _LastError
int anErrorSTATEtoHANDLE = GetLastError(); /* get a value of the _LastError
+ implicit post-reset _LastError */
// -------------------------------------------- // HANDLE ERROR-STATE(s)
switch( anErrorSTATEtoHANDLE ){
case ERR_NO_ERROR: break;
case ERR_NO_RESULT: ...
break;
case ERR_INVALID_TRADE_PARAMETERS: ...
break;
case ERR_SERVER_BUSY: ...
break;
case ERR_BROKER_BUSY: ...
break;
case ERR_TOO_MANY_REQUESTS: ...
break;
case ERR_TRADE_MODIFY_DENIED: ...
break;
...
default: break;
}
// -------------------------------------------- // FIN __________________________
这使您的代码能够抵抗任何类型的“被遗忘”(巧合地未重置)最后一个错误(这不会在出现此类错误的地方使您的代码执行崩溃但是......)这将触发以后不需要的“下一个”错误处理部分中的行为,因此在电子邮件信号不存在但_LastError
系统寄存器内的“忘记”(未重置)值偶然匹配的情况下也可能向您发送电子邮件错误处理情况,导致发送所述电子邮件(就像存在电子邮件信号一样(如上所述,并非如此)。