gpt4 book ai didi

c# - 在 C# 中捕获多个异常

转载 作者:太空宇宙 更新时间:2023-11-03 17:12:43 28 4
gpt4 key购买 nike

我正在运行 FXCop 来清理我的代码,而 FXCop 提示我如何捕获异常。“你不应该捕获 Exception 或 SystemException。捕获通用异常类型可以向库用户隐藏运行时问题,并且会使调试复杂化。你应该只捕获那些你可以优雅处理的异常。”

这是我的代码示例,有谁知道如何改进它,(这样 FxCop 就不会提示?)

谢谢:)

catch(Exception e)
{
if(e is IOException)
{
Console.WriteLine("{0} System IO Exception", e);
}

if (e is DirectoryNotFoundException)
{
Console.WriteLine("{0} Directory not found", e);
}

if (e is ArgumentException)
{
Console.WriteLine("{0} Directory is invalid", e);
}

if(e is PathTooLongException)
{
Console.WriteLine("{0} Directory path is too long", e);
}

if (e is UnauthorizedAccessException)
{
Console.WriteLine("{0} Unauthorised to delete directory", e);
}
}

最佳答案

多种捕获,每种类型捕获一个。

} catch(DirectoryNotFoundException ex){
Console.WriteLine("{0} Directory not found", ex);
} catch(PathTooLongException exx){
Console.WriteLine("{0} Directory path is too long", exx);
} catch(IOException e){
Console.WriteLine("{0} System IO Exception", e);
} catch(ArgumentException e){
Console.WriteLine("{0} Directory is invalid", e);
} catch(UnauthorizedAccessException exxx){
Console.WriteLine("{0} Unauthorised to delete directory", exxx);
} catch(Exception exxxx){
Console.WriteLine("{0} plain old exception", exxxx);
}

关于订单的注意事项

请记住,您希望将子异常类(在继承方面)放在列表​​的前面。

示例:您有 ChildException 继承自 ParentException。在 catch block 中,您想在 ParentException 之前列出 ChildException。如果首先列出 ParentException,则抛出的任何 ChildException 都将在它可以向上转换到的第一个分支中被捕获。

编辑

  • 固定顺序以说明继承

关于c# - 在 C# 中捕获多个异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6126414/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com