为什么Visual Studio在try-catch语法中生成异常变量

本文关键字:异常 变量 语法 Visual Studio try-catch 为什么 | 更新日期: 2023-09-27 18:27:02

这是Visual Studio生成try-catch语法时的标准文本。我发现我总是要遍历并将"ex"变量添加到"catch(Exception ex)"中。

为什么微软没有包含"e"或"ex",为什么有人想抓住一个例外而不想要它的详细信息??

try
{
}
catch (Exception)
{
throw;
}

为什么Visual Studio在try-catch语法中生成异常变量

此外,如果您只想重新抛出要在程序中的另一点处理的Exception,通过在抛出中按名称指定Exception变量,您将丢失Stack Trace和其中包含的有用信息。阅读本文了解更多信息。

许多开发人员当然会在他们的项目中启用"将警告视为错误"。此代码

try
{
}
catch (Exception ex)
{
    throw;
}

将至少生成一个警告(或一个错误,如果如上所述,开发人员已打开TWAE)。自动添加会引发新警告或导致代码编译失败的代码通常是个坏主意。所以这就是为什么它没有添加ex

在某些情况下,特定代码块的异常可能有一个原因,而且只有一个原因。在这种情况下,您不需要以任何方式检查异常对象——您已经知道如何从这种情况中恢复。在这种情况下,您可能会合法地不检查异常对象,如果为Exception指定了名称,则会再次收到警告或错误。

我很少需要异常的实例。这就是为什么他们称他们为"例外";如果一切都是例外,我们不妨去掉"错误"这个词。通过指定期望捕获的子类异常,您可以处理特定的情况,并在实际出现错误时重新抛出。

Ex。如果您试图解析一个int,您将期望捕获一个FormatException。您不需要了解有关异常类型的任何其他信息,只需要了解参数可能无效的可能性。

在这种情况下,这是不可能的:

try{
    int a = int.parse(someString);
} catch(FormatException ex)
{
    Console.WriteLine("someString cannot be parsed to an int!");
    //Do we really need the exception instance e?
}

因为,

可能会发生多种类型的异常。而且,您可能希望自己处理这些例外情况。这就是为什么我们在Catch语句中有一个Exection。

别忘了:你可以试试这样的Catch语句:

Try{
}
Catch(ExceptionType1 ex)
{
   --Handle that Type of Exception accordingly
}
Catch(ExceptionTypeAnother ex)
{
    -- Handle that Type of Exception Accordingly
}
Catch(Exception ex)    --If another problems happens but not above then
{
     -- Error that might happen if the above fails 
 }

希望你明白我想让你明白的。

你所指出的是微软提供的一项卓越功能。