"Panie Sebastianie, wyskoczył błąd i się nie zaksięgowało, proszę o pomoc."
Oczywiście nie ma komunikatu błędu i większość czasu trzeba teraz poświęcić na to co było robione a nie na poprawę mechanizmu/danych.
Dobrym rozwiązaniem jest zapisywanie pewnych wyjątków w bazie danych, aby później można było je przeglądać.
Oczywiście można pisać swoje różne mechanizmy, ale pokażę jak to zrobić bardzo prosto (ale wymagana jest licencja na AIF).
Moduł AIF (Aplication Integration Framework) poza swoją funkcjonalnością udostępnia kilka ciekawych klas.
W tym poście pokażę jak wykorzystać dwie z nich AifInfoLog oraz SysExceptionLog.
Mamy kawałek kodu (w naszym przypadku potwierdzenie listy pobrania) i chcemy zalogować wyjątek jeśli wystąpi:
static void SBR_AifInfoLog_Example(Args _args) { AifInfoLog aifInfoLog; SysExceptionLog exceptionLog; ; aifInfoLog = new AifInfoLog(); try { // resetujmy zapamiętane komunikaty aifInfoLog.reset(); // kod który zwraca wyjątek WMSOrder::find('00000081_068').finish(); } catch { // zapisujemy wyjątek do bazy danych exceptionLog = new SysExceptionLog(); exceptionLog.writeInfoLogData('SBR_TEST', aifInfoLog.getInfoLogData()); } }
Aby zobaczyć zalogowane wyjątki uruchamiamy menu item \Menu Items\Display\Exceptions i uruchamiamy formatkę gdzie mamy listę przechwyconych wyjątków.