Езикови средства за създаване на устойчив код


Езикови средства за създаване на устойчив код



1. Въведение в SEH

int ConcStr( TCHAR* pszDest, TCHAR* pszSrc, int cDest )

{ TCHAR* pResult = NULL;

if( pszDest && pszSrc )

{ int nDest = lstrlen( pszDest); int nSrc = lstrlen( pszSrc);

if(( nDest + nSrc) < cDest ) pResult = lstrcat( pszDest, pszSrc );

}

if ( pResult ) return lstrlen (pResult) );

else return 0; }

Ето същия пример в по-доба структура:

int ConcStr( TCHAR* pszDest, TCHAR* pszSrc, int cDest )

{ __try

{ TCHAR* pResult = lstrcat ( pszDest, pszSrc );return lstrlen( pResult );

}

__except( EXCEPTION_EXECUTE_HANDLER )

{ return 0; }}


Termination Handler

BOOL Myfunc()

{ int* p = 0;

__try { // използва се p }

__finally { delete p; } return fReturn; }


Ето един двусмислен код:

long CalcFactorial ( int n )

{ long lResult;

__try { if( n>2)

{ for( lResult = 1; n > 1; n-- ) lResult *=n; }

else return (long)n; }

__finally { return lResult; }}


__try

{ …………..; __leave; ……………} // нищо след leave не оказва влияние.


int main()

{ __try { __leave; cout << “never” << endl; }

__finally {if (AbnormalTermination() != FALSE )

cout << “abnormal termination” << endl;

else cout << “normal termination” << endl; }

return 0; }


филтри:

EXCEPTION_EXECUTE_HANDLER term. handler (1)

EXCEPTION_CONTINUE_SEARCH (0) - dispatcher ще търси друг.

EXCEPTION_CONTINUE_EXECUTION пренебрегва (-1)

__except ( GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION )

{ cout << “прихваната изкл. ситуация” <<endl;

} // опит за четене/запис без инициал. на указател или без съответни права.

или по-общ анализ:

__ except( ExceptionFilter( GetExceptionCode()))

където

int ExceptionFilter( int nException )

{ int nReturn;

switch( nException )

{

case EXCEPTION_INT_DIVIDE_BY_ZERO:

nReturn = EXCEPTION_EXECUTE_HANDLER;

break;

………………….


Други реферати:
Работа с графики
Първи стъпки в MICROSOFT WORD
Урок Компютърни мрежи
Някои помощни неща за Microsoft Office World
Създаване на база данни с Microsoft Access


Изтегли реферата



Създаване на база данни с Microsoft Access - Facebook Image
Сайтът се поддържа от DH Studio | pomagalo1.com © 2012 | Общи условия