c exception handling tutorial with code examples
Obsługa wyjątków to metoda obsługi błędów, które mogą wystąpić podczas wykonywania programu. W tym samouczku wyjaśniono obsługę wyjątków w języku C # z przykładami kodu:
framework oparty na danych w selenium webdriver
Obsługa wyjątków służy do upewnienia się, że przepływ programu jest kontynuowany, nawet jeśli wystąpi błąd w czasie wykonywania. Wyjątki to obiekty, które są generowane w przypadku napotkania dowolnego błędu w czasie wykonywania.
Jeśli wyjątki nie są obsługiwane, C # wygeneruje komunikat o wyjątku i zakończy działanie programu, w tym miejscu pojawia się obsługa wyjątków.
=> Przeczytaj przewodnik C # dla początkujących tutaj
Czego się nauczysz:
- Jakie są wyjątki?
- Słowa kluczowe do obsługi wyjątków
- Klasy wyjątków obecne w C #
- Obsługa wyjątków w C #
- Wniosek
- rekomendowane lektury
Jakie są wyjątki?
Wyjątki to bezprecedensowe błędy, które mogą wystąpić w programie podczas działania. W większości przypadków programiści mogą łatwo wykryć niektóre błędy, takie jak walidacja lub sprawdzanie wartości null lub podczas weryfikowania niektórych wartości.
Ale są chwile, kiedy nie możemy przewidzieć, co lub kiedy pojawi się błąd. Na przykład, powiedzmy, że szukam pliku w lokalizacji. Mój program będzie działał doskonale, dopóki plik nie będzie obecny, a jeśli w jakiś sposób plik zostanie usunięty, mój program wyświetli błąd.
Wyjątki nie występują regularnie, ale nadal mogą się zdarzyć i zawsze będziesz chciał sobie z nimi radzić ostrożnie. Aby sobie z tym poradzić, używamy obsługi wyjątków.
Niektóre błędy oprogramowania wskazują na problem z łącznością fizyczną
Ilekroć pojawia się błąd, mówimy, że jest wyrzucany, a „rzucany” jest przedmiotem System.Exception klasa w C #. Plik System.Exception class oferuje różne metody i właściwości, które podają szczegółowe informacje o błędzie, który właśnie napotkał Twój program.
Podobnie jak właściwość śledzenia stosu, która udostępnia stos, dla którego wystąpił problem, lub właściwość Message, która zawiera opis wyjątku.
Słowa kluczowe do obsługi wyjątków
Wyjątki oferują proces kontrolowania określonej części programu, tak że nawet jeśli w tej części występuje wyjątek, sterowanie programem jest przenoszone do innej części programu. W języku C # obsługa wyjątków jest zasadniczo zbudowana wokół czterech słów kluczowych: rzuć, spróbuj, złap i wreszcie .
rzucać
Jak już omówiliśmy, rzut jest obiektem z System.Exception klasa w C #. Pozwala programowi zgłosić błąd za każdym razem, gdy go napotka.
próbować
Blok try zawiera blok kodu, który może spowodować, że program zgłosi wyjątek. Po nim następuje jeden lub więcej bloków catch.
złapać
Gdy blok try napotka wyjątek, zapewnia kontrolę blokowi catch w celu przechwycenia wyjątku. Blok catch może również zawierać zestaw kodów, które program musi wykonać w przypadku wyjątku lub może po prostu przechwycić wyjątek i nic nie robić w zależności od scenariusza i wymagań.
Wreszcie
Ostatni blok jest używany do wykonania określonego fragmentu kodu lub instrukcji, niezależnie od wystąpienia wyjątku. Ostatecznie blok jest zawsze wykonywany i może być wykonywany zaraz po bloku próbującym, jeśli program nie znajdzie żadnego wyjątku lub może zostać wykonany po bloku catch, gdy program złapie wyjątek.
Klasy wyjątków obecne w C #
Wszystkie wyjątki w C # są wyprowadzane bezpośrednio lub pośrednio z System.Exception klasa.
Przyjrzyjmy się pokrótce niektórym z najczęstszych wyjątków:
- Wyjątek System.IO.IOException: Obsługuje wszelkie błędy związane z danymi wejściowymi i wyjściowymi.
- System.DividedByZeroException: Obsługuje błąd zgłaszany, gdy liczba jest dzielona przez zero.
- System.NullReferenceException : Obsługuje każdy błąd, który może wystąpić, gdy występuje odwołanie do obiektu o wartości null.
- System.IndexOutOfRangeException: Obsługuje błąd zgłaszany, gdy program próbuje uzyskać dostęp do indeksu, który jest poza zakresem tablicy.
- System.OutOfMemoryException: Obsługuje zgłoszony błąd spowodowany niewystarczającą ilością pamięci.
Obsługa wyjątków w C #
C # ma bardzo dobrze zdefiniowane rozwiązanie do obsługi każdego typu wyjątku, który może wystąpić przy użyciu bloku try and catch. Korzystając z tego bloku, podstawową instrukcję programu można oddzielić od innych instrukcji.
Przykład:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); } } }
W powyższym przykładzie załączyliśmy nasz kod do otwierania pliku pod blokiem try. Ponieważ nie podaliśmy żadnej prawidłowej ścieżki do pliku, kod powinien generować błąd. Teraz złapaliśmy błąd w naszym bloku catch. Jeśli plik nie istnieje w podanej ścieżce do pliku, kod zgłosi wyjątek FileNotFoundException.
Ten wyjątek zostanie przechwycony przez blok catch, w którym już zdefiniowaliśmy oczekiwany wyjątek. Teraz wyobraźmy sobie, że jeśli nasz kod rzuca inny wyjątek, inny niż ten, który już zdefiniowaliśmy, to nasz blok nie będzie w stanie go przechwycić. Aby złapać dowolny ogólny wyjątek, dodamy kolejny blok catch.
Rzućmy okiem na nasz zaktualizowany kod:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.ReadLine(); } } }
Ten ogólny blok catch będzie w stanie wychwycić wszystkie wyjątki, które mogą zostać wrzucone wewnątrz bloku try. Teraz dodajmy też ostatni blok, aby to zakończyć. Aby to uprościć, po prostu wydrukujmy wiadomość za pomocą bloku last.
darmowy ripper dvd dla systemu Windows 8
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
Tutaj właśnie dodaliśmy ostatni blok z prostą wiadomością. W bloku można również dodać niestandardowe instrukcje. Ale ogólna struktura programu pozostanie podobna do przedstawionej tutaj.
Blok Final będzie zawsze wykonywany niezależnie od tego, czy wystąpił wyjątek, czy nie. Program uruchomi się z bloku try, a następnie przejdzie bezpośrednio do ostatniego bloku, jeśli nie ma błędów / wyjątków. Jeśli napotka wyjątek, najpierw przesunie się, aby złapać, a następnie wykona ostatni blok.
Czy istnieje warunek, że ostatni blok nie zostanie wykonany?
Jak sama nazwa wskazuje, ostatni blok jest wykonywany na końcu i jest ostatnim blokiem kodu, który zostanie wykonany. Ostatecznie blok będzie zawsze wykonywany, gdy aplikacja jest uruchomiona. Jedynym momentem, w którym ostatecznie blok nie zostanie wykonany, jest awaria aplikacji lub celowe jej zabicie za pomocą polecenia procesu.
Wniosek
Jeśli wyjątki nie są obsługiwane prawidłowo, spowodują błąd w programie. Jeśli nie użyłeś bloków try / catch nigdzie w kodzie, program przerwie działanie i wyświetli komunikat pokazujący wyjątek. Zwykłemu użytkownikowi będzie bardzo trudno prześledzić błąd z powrotem do kodu źródłowego i rozwiązać go.
Dlatego zawsze dobrą praktyką jest zapewnienie obsługi wyjątków w programie.
Przykładowy kod
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
=> Zobacz naszą pełną serię szkoleń C # tutaj
rekomendowane lektury
- C # funkcje / metody samouczek z przykładami kodu
- Python DateTime Tutorial z przykładami
- Samouczek SVN: Zarządzanie kodem źródłowym przy użyciu Subversion
- C # String Tutorial - Metody ciągów z przykładami kodu
- Obsługa wyjątków w C ++
- Samouczek Tortoise SVN: Zmiany w repozytorium kodu
- Samouczek AWS CodeBuild: wyodrębnianie kodu z kompilacji Maven
- Jak obsługiwać wyjątki w skryptach SoapUI Groovy - samouczek SoapUI nr 11