Looking for c# Keywords? Try Ask4Keywords

C# Language Наконец, блок


пример

try
{
    /* code that could throw an exception */
}
catch (Exception)
{
    /* handle the exception */
}
finally
{
    /* Code that will be executed, regardless if an exception was thrown / caught or not */
}

Блок try / catch / finally может быть очень удобен при чтении из файлов.
Например:

FileStream f = null;

try
{
    f = File.OpenRead("file.txt");
    /* process the file here */
}
finally
{
    f?.Close(); // f may be null, so use the null conditional operator.
}

За блоком try должен следовать либо catch либо finally . Однако, поскольку нет блокировки catch, выполнение приведет к завершению. Перед завершением будут выполнены инструкции внутри блока finally.

В чтении файла мы могли использовать using блок как FileStream (что возвращает OpenRead ) реализует IDisposable .

Даже если в блоке try есть оператор return блок finally , как правило, выполняется; есть несколько случаев, когда это не будет:

  • Когда происходит StackOverflow .
  • Environment.FailFast
  • Процесс приложения убит, как правило, внешним источником.