Przechwytywanie wyjątków instrukcją try catch

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2756 razy

Instrukcja try catch umożliwia przechwytywanie paskudnych wyjątków, które można również samemu definiować. Oto prosty przykład:

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ProgramHandleException { class Program { class ToSmall : Exception // mój własny wyjątek, który wykorzystam, gdy wartość zmiennej będzie za mała { }; class ToBig : Exception // mój własny wyjątek, który wykorzystam, gdy wartość zmiennej będzie za duża { }; static void Main(string[] args) { int age = 0; do { Console.Write("Proszę podać wiek: "); try { age = int.Parse(Console.ReadLine()); if (age <= 0) { throw new ToSmall(); // tworzę wyjątek do obsłużenia } else if (age > 120) { throw new ToBig(); // i tu też tworzę wyjątek do obsłużenia } } catch (ToSmall e) // obsługa wyjątku ToSmall (za mała) { Console.WriteLine("Zaniżyłeś swój wiek trochę za bardzo!"); } catch (ToBig e) // obsługa wyjątku ToBig (za duża) { Console.WriteLine("Zawyżyłeś swój wiek trochę za bardzo!"); } catch (FormatException e) { Console.WriteLine("Wpisałeś coś, co nie było liczbą!"); } catch (Exception e) // inne wyjątki { Console.WriteLine("{0} wyjątek przechwycony", e); } } while (age <= 0 || age > 120); Console.ReadLine(); } } }

Jak wynika z powyższego kodu, utworzenie własnego wyjątku wymaga stworzenia klasy, która z kolei musi dziedziczyć po klasie Exception. Obiekt tejże klasy należy utworzyć i wywołać za pomocą słowa kluczowego throw.

Przykładowy wynik działania powyższego kodu:

Proszę podać wiek: wiek
Wpisałeś coś, co nie było liczbą!
Proszę podać wiek: -1
Zaniżyłeś swój wiek trochę za bardzo!
Proszę podać wiek: 121
Zawyżyłeś swój wiek trochę za bardzo!
Proszę podać wiek: 20

Lista wszystkich dostępnych wyjątków:

Propozycje książek
tytuł: C# 10. Programowanie. Tworzenie aplikacji Windows, internetowych i biurowych autor: Ian Griffiths

Tytuł:

C# 10. Programowanie. Tworzenie aplikacji Windows, internetowych i biurowych

Autor:

Ian Griffiths

tytuł: C# 10 i .NET 6 dla programistów aplikacji wieloplatformowych. Twórz aplikacje, witryny WWW oraz serwisy sieciowe za pomocą ASP.NET Core 6, Blazor i EF Core 6 w Visual Studio 2022 i Visual Studio Code. Wydanie VI autor: Mark J. Price

Tytuł:

C# 10 i .NET 6 dla programistów aplikacji wieloplatformowych. Twórz aplikacje, witryny WWW oraz serwisy sieciowe za pomocą ASP.NET Core 6, Blazor i EF Core 6 w Visual Studio 2022 i Visual Studio Code. Wydanie VI

Autor:

Mark J. Price

tytuł: Visual Studio 2022, C# i .NET. Programowanie kontrolek autor: Łukasz Sosna

Tytuł:

Visual Studio 2022, C# i .NET. Programowanie kontrolek

Autor:

Łukasz Sosna

tytuł: C# 10. Leksykon kieszonkowy autor: Joseph Albahari, Ben Albahari

Tytuł:

C# 10. Leksykon kieszonkowy

Autor:

Joseph Albahari, Ben Albahari

tytuł: Wzorce projektowe w .NET Core 3. Projektowanie zorientowane obiektowo z wykorzystaniem C# i F# autor: Dmitri Nesteruk

Tytuł:

Wzorce projektowe w .NET Core 3. Projektowanie zorientowane obiektowo z wykorzystaniem C# i F#

Autor:

Dmitri Nesteruk

tytuł: Jak pisać świetne gry 2D w Unity. Niezależne programowanie w języku C# autor: Jared Halpern

Tytuł:

Jak pisać świetne gry 2D w Unity. Niezależne programowanie w języku C#

Autor:

Jared Halpern

tytuł: C# 9.0 w pigułce autor: Joseph Albahari

Tytuł:

C# 9.0 w pigułce

Autor:

Joseph Albahari

tytuł: C# 9.0. Leksykon kieszonkowy autor: Joseph Albahari, Ben Albahari

Tytuł:

C# 9.0. Leksykon kieszonkowy

Autor:

Joseph Albahari, Ben Albahari

tytuł: C# 8.0. Kompletny przewodnik dla praktyków. Wydanie VII autor: Mark Michaelis

Tytuł:

C# 8.0. Kompletny przewodnik dla praktyków. Wydanie VII

Autor:

Mark Michaelis

tytuł: C# 8.0 w pigułce autor: Joseph Albahari, Eric Johannsen

Tytuł:

C# 8.0 w pigułce

Autor:

Joseph Albahari, Eric Johannsen

W związku z tym, że firma Helion nie wywiązuje się z swoich zobowiązań naliczania prowizji za każdą zakupioną książkę a kontakt z ową frmą jest nie możliwy autor strony zmuszony został do zablokowania linkowania książek. Za wszelkie niedogodności z tym związane z góry przepraszam i obiecuję włączenie linkowania gdy tylko sprawa zostanie wyjaśniona