Obsługa wyjątków

Każdy niezłapany wyjątek w POS zostanie zaprezentowany w postaci okna komunikatu oraz zapisany w pliku loga. Okno składa się z tytułu błędu oraz jego treści. Jeżeli wyjątek jest typu System.Exception lub dziedziczy po nim, tytułem błędu będzie typ rzucanego wyjątku, a treścią jego Message. W logu zapisana zostanie informacja o typu wyjątku, treść Message oraz stos wywołań. Nie jest to zbyt eleganckie rozwiązanie, ponieważ użytkownik nie powinien być straszony dziwnymi tytułami typu: NullReferenceException.

Rozwiązaniem jest skorzystanie z klasy Comarch.POS.Library.Erros.RetailException. Klasa ta dziedziczy po System.Exception i wprowadza dwie dodatkowe właściwości, które domyślnie są predefiniowane. Są nimi UITitle, używany do prezentacji tytułu błędu, oraz UIMessage do prezentacji treści bardziej przyjaznej użytkownikowi. Treści te są oczywiście lokalizowane w wspieranych przez POS językach. W logu natomiast niezmiennie zapisuje się typ wyjątku, jego oryginalna treść oraz stos wywołań. Aby ustawić własny tytuł i/lub treść należy stworzyć nowy typ wyjątku dziedziczący po klasie RetailException i przeciążyć odpowiednie właściwości.

W POS zdefiniowana kilkanaście typów pochodnych RetailException. Przykładową niepełną listę wraz z treściami UITitle oraz UIMessage dla języka polskiego prezentuje poniższa tabela.

Typ wyjątku

UITitle

UIMessage

RetailException Błąd systemu Wystąpił nieznany błąd
RetailSecurityException Odmowa dostępu Wystąpił nieznany błąd
RetailVoucherException Obsługa bonów Wystąpił nieznany błąd
RetailVoucherBlockedException Obsługa bonów Bon o numerze {0} jest zablokowany

Czy ten artykuł był pomocny?