gpt4 book ai didi

c# - 处理 Process.Start() 抛出的 Win32Exception

转载 作者:行者123 更新时间:2023-12-02 17:23:25 25 4
gpt4 key购买 nike

在某些计算机上,当我调用 Process.Start() 来启动我的辅助可执行文件时,出现以下异常:

System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()

问题:当我得到 Win32Exception 时,我想判断这是我描述的“找不到文件”异常还是其他异常。如何可靠地做到这一点?我应该将此 0x80004005 与某些东西进行比较,还是应该解析错误消息?

一些解释:可执行文件可能由于某种原因被删除(这就是找不到文件的原因)。这是预期的情况。如果异常是由于其他原因引发的,我想报告它。

最佳答案

我认为应该这样做:

public static int E_FAIL = unchecked((int)0x80004005);
public static int ERROR_FILE_NOT_FOUND = 0x2;

// When the exception is caught

catch (Win32Exception e)
{
if(e.ErrorCode == E_FAIL && e.NativeErrorCode == ERROR_FILE_NOT_FOUND)
{
// This is a "File not found" exception
}
else
{
// This is something else
}
}

E_FAILHRESULT value , ERROR_FILE_NOT_FOUNDsystem error code .

不应使用错误消息,因为它依赖于文化并且实际上是系统错误代码的翻译。

关于c# - 处理 Process.Start() 抛出的 Win32Exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40829838/

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