У меня есть следующий C# код:поток управления не пропуская, наконец, заблокировать, если исключение происходит в Ьгу блоке примерка наконец
public class Program
{
static void Main()
{
int i = 123;
string s = "Some string";
object obj = s;
try
{
// Invalid conversion;
i = (int)obj;
// The following statement is not run.
Console.WriteLine("WriteLine at the end of the try block.");
}
finally
{
Console.WriteLine("\n Finally Block executed !!!");
}
}
}
Когда исключение происходят сбои программы без передачи управления, наконец, блок поскольку понятно, что окончательный блок должен быть выполнен для освобождения ресурсов, полученных в блоке try.
Как вы можете видеть из [этого скрипку] (https://dotnetfiddle.net/wf8DN9), это не так. Предоставьте [mcve], демонстрирующий вашу проблему. –
Да, это будет работать на dotnetfiddle, но пока я запускал его на visual studio 2013, он выдает следующее исключение, не передавая управление, наконец, блокировать сначала, как в вашем случае. Необработанное исключение: System.InvalidCastException: Указанный приведение недействительно. at exceptionHandling.Program.Main() в c: \ Users \ Kifayat \ Desktop \ Learn \ excepti onHandling \ exceptionHandling \ Program.cs: строка 69 –
Он все равно выполнит его. То, что вы, вероятно, видите, это то, что Visual Studio разбивается на непослушные исключения, которые будут выполняться до того, как будет выполнен блок finally. Еще раз нажмите «Выполнить», и блок finally будет выполнен. –