很长一段时间,我认为
以下是我的代码片段:
我从未达到在控制台输出的那一行。这意味着当异常在
因此,我认为有两种情况:要么我漏了什么,要么
但我担心我可能在这里漏掉了什么。所以,有人能否确认组合是无用的或证明它不是无用的,请?
更新
在能够在其小提琴中调用finally块的评论之后,我在VS Code中再次进行了检查,但仍然没有看到输出。
finally
块可以让我释放所有资源,如果try
块中发生异常,那么资源仍然会在finally
块中释放。但事实似乎并非如此。以下是我的代码片段:
using System;
public sealed class Program
{
public static void Main()
{
try {
int zero = 0;
int i = 1/zero;
} finally {
Console.WriteLine("divide by zero"); //the line is never called
}
}
}
我从未达到在控制台输出的那一行。这意味着当异常在
try
块内被抛出时,我将无法在finally
块中释放资源。因此,我认为有两种情况:要么我漏了什么,要么
try
+finally
组合在C#中没有用例。第二种说法是有道理的,因为我可以通过以下代码获得与上面代码产生的相同功能:using System;
public sealed class Program
{
public static void Main()
{
int zero = 0;
int i = 1/zero;
Console.WriteLine("divide by zero"); //the line is never called
}
}
但我担心我可能在这里漏掉了什么。所以,有人能否确认组合是无用的或证明它不是无用的,请?
更新
在能够在其小提琴中调用finally块的评论之后,我在VS Code中再次进行了检查,但仍然没有看到输出。