Udostępnij za pośrednictwem


Jak używać bloku try/catch do przechwytywania wyjątków

Umieść dowolne instrukcje kodu, które mogą zgłaszać wyjątek w bloku try, a instrukcje używane do obsługi wyjątków umieszczaj w jednym lub więcej blokach catch, poniżej bloku try. Każdy catch blok zawiera typ wyjątku i może zawierać dodatkowe instrukcje potrzebne do obsługi tego typu wyjątku.

W poniższym przykładzie StreamReader otwiera plik o nazwie data.txt i pobiera wiersz z pliku. Ponieważ kod może zgłaszać dowolne z trzech wyjątków, umieszczony jest w bloku try. Trzy catch bloki przechwytują wyjątki i obsługują je, wyświetlając wyniki w konsoli.

using System;
using System.IO;

public class ProcessFile
{
    public static void Main()
    {
        try
        {
            using (StreamReader sr = File.OpenText("data.txt"))
            {
                Console.WriteLine($"The first line of this file is {sr.ReadLine()}");
            }
        }
        catch (FileNotFoundException e)
        {
            Console.WriteLine($"The file was not found: '{e}'");
        }
        catch (DirectoryNotFoundException e)
        {
            Console.WriteLine($"The directory was not found: '{e}'");
        }
        catch (IOException e)
        {
            Console.WriteLine($"The file could not be opened: '{e}'");
        }
    }
}
Imports System.IO

Public Class ProcessFile
    Public Shared Sub Main()
        Try
            Using sr As StreamReader = File.OpenText("data.txt")
                Console.WriteLine($"The first line of this file is {sr.ReadLine()}")
            End Using
        Catch e As FileNotFoundException
            Console.WriteLine($"The file was not found: '{e}'")
        Catch e As DirectoryNotFoundException
            Console.WriteLine($"The directory was not found: '{e}'")
        Catch e As IOException
            Console.WriteLine($"The file could not be opened: '{e}'")
        End Try
    End Sub
End Class

Środowisko uruchomieniowe języka wspólnego (CLR) przechwytuje wyjątki, których nie obsługują bloki catch. Jeśli wyjątek zostanie przechwycony przez clR, jeden z następujących wyników może wystąpić w zależności od konfiguracji środowiska CLR:

Uwaga / Notatka

Większość kodu może zgłosić wyjątek, a niektóre wyjątki, takie jak OutOfMemoryException, mogą być zgłaszane przez samą clr w dowolnym momencie. Chociaż aplikacje nie są wymagane do obsługi tych wyjątków, należy pamiętać o możliwości pisania bibliotek, które mają być używane przez inne osoby. Aby otrzymać sugestie dotyczące ustawienia kodu w bloku try, zobacz Najlepsze praktyki dotyczące wyjątków.

Zobacz także