Sobes.tech
Junior

Czym jest operator throw w C#?

sobes.tech AI

Odpowiedź od AI

Operator throw jest używany do jawnego wywoływania wyjątku. Pozwala przerwać normalne wykonanie programu i przekazać kontrolę do bloku obsługi wyjątków.

// Przykład użycia operatora throw
try
{
    int[] numbers = { 1, 2, 3 };
    int index = 5;

    // Ręczne wywołanie wyjątku IndexOutOfRangeException
    if (index >= numbers.Length)
    {
        throw new IndexOutOfRangeException("Indeks znajduje się poza zakresem tablicy.");
    }

    Console.WriteLine(numbers[index]);
}
catch (IndexOutOfRangeException ex)
{
    // Obsługa wyjątku
    Console.WriteLine($"Błąd: {ex.Message}");
}

Operator throw może być używany w dwóch formach:

  1. throw expression;: Wywołuje nowy wyjątek, gdzie expression jest instancją klasy dziedziczącej po System.Exception.

    throw new ArgumentException("Nieprawidłowy argument.");
    
  2. throw;: Ponownie rzuca bieżący wyjątek w bloku catch. Zachowuje pełne informacje o stosie wywołań oryginalnego wyjątku.

    try
    {
        // Kod, który może wywołać wyjątek
    }
    catch (FileNotFoundException ex)
    {
        // Dodatkowe obsługiwanie lub logowanie
        Console.WriteLine($"Plik nie został znaleziony: {ex.FileName}");
    
        // Ponowne rzucenie wyjątku do dalszej obsługi wyżej w stosie
        throw;
    }
    

Użycie throw jest ważne dla:

  • Wskazywania błędów lub nieoczekiwanych sytuacji w aplikacji.
  • Tworzenia własnych wyjątków dla specyficznych błędów.
  • Przekazywania informacji o błędzie do wywołującego kodu w celu poprawnego obsłużenia.