C#中的Catch and Catch(例外e)

Ale*_*dre 2 .net c#

我猜这三部分代码没有区别,不是吗?

   try
    {
       // .............
    }
    catch
    {
        // ............. 
    }
Run Code Online (Sandbox Code Playgroud)

   try
    {
       // .............
    }
    catch(Exception)
    {
       // .............  
    }
Run Code Online (Sandbox Code Playgroud)

try
{
   // .............
}
catch(Exception e)
{
    // ............. 
}
Run Code Online (Sandbox Code Playgroud)

但是,当我应该使用第一个和第二个时,我几乎是精明的.但我希望你能说出你的想法.

SLa*_*aks 14

第一个也将捕获不是异常的抛出对象.
(这可能发生在非符合CLS的代码中)

如果您实际上没有使用异常变量,则第二个不会给出编译器警告.

仅当您确实需要检查抛出的异常(例如,记录它)时,才应使用第三个.