을 나는 다음과 같은 C# 코드가 있습니다제어 흐름은 예외가의 try 블록에서 발생하는 경우 결국 차단을 통해 전달되지 시도 - 마지막
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 !!!");
}
}
}
예외가 finally 블록으로 제어를 통과하지 않고 프로그램이 충돌 발생 try 블록에서 얻은 리소스를 해제하려면 finally 블록을 실행해야한다는 것을 이해해야합니다.
당신이에서 볼 수있는 바와 같이,이 바이올린은] (https://dotnetfiddle.net/wf8DN9), 이것은 사실이 아니다. 자신의 문제를 나타내는 [mcve]를 제공하십시오. –
네, dotnetfiddle에서 작동하지만 Visual Studio 2013에서 실행 한 후에는 컨트롤을 통과하지 않고 다음과 같은 예외를 throw하여 최종적으로 블록을 먼저 처리합니다. 처리되지 않은 예외 : System.InvalidCastException : 지정한 캐스트가 유효하지 않습니다. at exceptionHandling.Program.Main() in c : \ Users \ Kifayat \ Desktop \ Learn \ excepti onHandling \ exceptionHandling \ Program.cs : 줄 69 –
여전히 실행됩니다. 아마도 Visual Studio가 finally 블록이 실행되기 전에 처리되지 않는 예외를 깨기 때문일 수 있습니다. 'Run'을 다시 누르면 finally 블록이 실행됩니다. –