C# – Obsługa wyjątków (try catch finally)

Loading Likes...

W tym artykule dowiesz się nieco o wyjątkach. Postaram się również wyjaśnić najważniejsze kwestie związane z tym zagadnieniem. Zaczynajmy.

Co to jest wyjątek?

  • Wyjątek, to nieprzewidziany “scenariusz” działania programu.

Po co używać instrukcji try?

  • Jak się pewnie domyślasz, nieprzewidziane zachowanie naszego programu można obsłuzyć. Właśnie z takim zamiarem stosuje się instrukcję try

Jaka jest budowa instrukcji try?

  • Piszemy instrukcję try, następnie instrukcję catch lub finally, lub obie. Poniżej znajduje się przykład.

Czym są klauzule catch oraz finally?

  • catch – Po klauzuli catch możemy określić jakiego rodzaju wyjątki mają być przechwytywane. Znaczy to tyle, że w przypadku gdy taki wyjątek będzie miał miejsce, program wejdzie właśnie w ten blok kodu znajdujący się pomiędzy nawiasami klamrowymi.
  • finally – Zawiera blok instrukcji, które zawsze są wykonywane. Jest przydatny do wykonywania czynności porządkowych, np. do zamknięcia połączenia sieciowego.

Gdzie znaleźć nazwy wyjątków?

  • Listę wszystkich wyjątków możesz znaleźć tutaj.

Jak obsłużyć wszystkie wyjątki jednocześnie, bez konieczności deklarowania wszystkich?

  • Są dwa sposoby. Pozbywamy się nawiasów po instrukcji catch, lub używamy klasy Exception. Drugi sposób daje nam dodatkową możliwość podejrzenia szczegółów błędu.

Przyjrzyjmy się zatem najbardziej znanemu przykładowi z dzieleniem przez zero.

Dzięki wykorzystaniu obsługi błędów, nasz program nie zakończy działania w momencie pojawienia się wyjątku, tylko poinformuje nas o zaistniałym wyjątku.

Na podstawie powyższego przykładu możesz łatwo zauważyć,  że bloków catch może być wiele, natomiast trzeba wiedzieć,  że blok obsługujący wyjątek ogólny (Exception) musi znajdować się na samym końcu.

W C# 6.0 wprowadzono możliwosć używania z klauzulą catch filtrów wyjątków, które to filtry definiuje się za pomocą klauzuli when.

Gdyby w tym przykładzie zgłoszony został wyjątek typu WebException, to nastąpiłoby obliczenie wartości wyrażenia logicznego znajdującego się za słowem kluczowym when. W przypadku gdy to wyrażenie miałoby wartość false zostałby zignorowany i nastąpiłoby sprawdzenie kolejnych klauzuli catch. Dzięki zastosowaniu klauzuli when, mamy możliwość sprawdzenia wartości wyjątku przed wykonaniem bloku catch.

You May Also Like

About the Author: Jerzy Kołakowski

Pasjonat informatyki, bloger. Full-stack Developer Technologie:
  • ASP.NET MVC
  • ASP.NET CORE
  • Angular 2+

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Facebook
Inline
Inline