Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Поместите все операторы кода, которые могут вызывать исключение, в блок try
, а операторы, используемые для обработки исключений, разместите в одном или нескольких блоках catch
, находящихся ниже блока try
. Каждый catch
блок включает тип исключения и может содержать дополнительные инструкции, необходимые для обработки этого типа исключения.
В следующем примере StreamReader открывает файл с именемdata.txt и извлекает строку из файла. Так как код может вызвать любое из трех исключений, он помещается в try
блок. Три catch
блока перехватывают исключения и обрабатывают их, отображая результаты в консоли.
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
Среда CLR перехватывает исключения, которые не обрабатываются блоками catch
. Если CLR перехватывает исключение, в зависимости от конфигурации CLR может произойти один из следующих результатов:
- Откроется диалоговое окно отладки .
- Программа останавливает выполнение и появится диалоговое окно с сведениями об исключении.
- Ошибка выводится в стандартный поток вывода ошибок.
Замечание
Большинство кода может вызывать исключение, и некоторые исключения, например OutOfMemoryException, могут быть вызваны самой средой CLR в любое время. Хотя приложениям не требуется иметь дело с этими исключениями, следует учитывать возможность написания библиотек для использования другими пользователями. Для предложений по тому, когда размещать код в блоке try
, см. Лучшие практики для исключений.