Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
- Zostanie wyświetlone okno dialogowe Debugowanie .
- Program zatrzymuje wykonywanie, a zostanie wyświetlone okno dialogowe z informacjami o wyjątku.
- Błąd zostaje wypisany na standardowy strumień danych wyjściowych błędów.
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.