czwartek, 6 września 2012

Przechwytywanie wyjątków we własnym przebiegu.

Przechwytywanie wyjątków we własnym przebiegu.

Gdy wystąpi wyjątek w jakimś Jobie, zostanie on przedstawiony w następujący sposób.

Dużo wygodniejszą formą (dla mnie) jest przedstawienie do w takiej formie :
Wtedy okno infoLog można wykorzystać do czegoś innego.

Efekt taki osiągamy następującym kodem :
  
static void SBR_ExceptionDemo(Args _args)
{
    AifInfoLog                      aifInfoLog;
    SysInfoLogEnumerator            infoLogEnum;
    SysInfologMessageStruct         infoMessageStruct;
    ;
    try {
        aifInfoLog = new AifInfoLog();
        
        ttsBegin;

        // linia powodujaca wyjatek
        SalesTable::find('XXX').update();
        
        ttsCommit;

    } catch {
        infoLogEnum = SysInfoLogEnumerator::newData(aifInfoLog.getInfoLogData());
        infolog.clear(0);

        while(infoLogEnum.moveNext())
        {
            infoMessageStruct = SysInfologMessageStruct::construct(infoLogEnum.currentMessage());
            infolog.messageWin().addLine( 'ERROR : ' + infoMessageStruct.message() );
        }
    }
    
    pause;
}