gpt4 book ai didi

c# - 我应该使用哪个 .NET 异常来指示外部应用程序失败?

转载 作者:太空狗 更新时间:2023-10-30 00:45:16 25 4
gpt4 key购买 nike

我是使用 C# 和 .NET 的新手,但我想尝试发挥良好的作用并重新使用系统组件。

在我维护的代码中,有几个我们运行外​​部工具和应用程序的实例,看起来像这样:

using (var Setup = Process.Start(SetupInfo) )
{
Setup.WaitForExit(SetupTimeout);
if (!Setup.HasExited )
throw new TimeoutException(
"Setup did not complete within the expected time");
}

我正在尝试为那些具有明确定义的退出代码的外部工具添加退出代码验证,即“使用” block 中的类似内容:

switch ( Setup.ExitCode )
{
case 0:
break;
case 1:
throw new SetupFailedException("Setup execution failed");
case 2:
throw new SetupFileNotFound("Setup did not find required files");
default:
throw new ExternalErrorException("Setup failed for some other reason");
}

...其中前两个将派生自通用“ExternalErrorException”。但是是否有一些现有的通用异常我可以为此重新使用,即表示外部进程未能按预期运行,而不是发明我自己的?

最佳答案

只有在调用堆栈的某处有代码将捕获异常并处理失败时,抛出专用异常类型才有意义。处理这样的严重错误非常困难,您不知道为什么安装程序会出现这样的错误行为。

这使得继续执行代码很可能毫无意义,事情只会从那里开始走下坡路。毕竟,一个必要的程序没有安装,当你尝试使用它时很容易抛出更多的异常。现在没有很好的解释失败的原因,真正的原因是安装程序没有工作。

或者,如果这只是一个辅助操作,不会以其他方式影响您的主程序,则需要向用户报告,以便她可以联系 IT 支持以找出解决问题的方法。

两者都不需要一组专用的异常类型。只捕获您知道如何从中恢复的异常。

关于c# - 我应该使用哪个 .NET 异常来指示外部应用程序失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5911907/

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