0

在我的应用程序中,我启动 capinfos.exe,它是 Wireshark 的一部分。在构造函数中,我检查机器上是否安装了 Wireshark:

private string _filePath = "";

public Capinfos(string capturePath)
{
    if (Directory.Exists(@"C:\Program Files (x86)\Wireshark"))
    {
        _capInfos = @"C:\Program Files (x86)\Wireshark\capinfos.exe";
    }
    else if (Directory.Exists(@"C:\Program Files\Wireshark"))
    {
        _capInfos = @"C:\Program Files\Wireshark\capinfos.exe";
    }

    _filePath = capturePath;
}

如果机器上不存在该文件,最好的方法是什么并抛出异常:请安装 Wireshark

4

3 回答 3

1
private string _filePath = "";

public Capinfos(string capturePath) throws FileNotFoundException
{
    if (Directory.Exists(@"C:\Program Files (x86)\Wireshark"))
    {
        _capInfos = @"C:\Program Files (x86)\Wireshark\capinfos.exe";
    }
    else if (Directory.Exists(@"C:\Program Files\Wireshark"))
    {
        _capInfos = @"C:\Program Files\Wireshark\capinfos.exe";
    } else
    {
       throw new FileNotFoundException(@"Wireshark installation not found");
    } 

    _filePath = capturePath;
}

然后,您可以使用以下代码捕获异常:

   try
    {
        Capinfos("path");
    }
    catch (FileNotFoundException ex)
    {
        Messagebox.Show("Please install wireshark.");
    }

我没有安装 C#,这是手写的。希望没事!这是学习异常的绝佳资源:http: //msdn.microsoft.com/en-us/library/0yd65esw (v=vs.80).aspx

于 2012-12-05T18:26:04.750 回答
0

就像是:

throw new FileNotFoundException("Could not find " + _capInfos, _capInfos);
于 2012-12-05T18:23:56.697 回答
0

不确定这是否是您想要的,但请尝试使用try-catch块。您可以尝试在 try 块中启动 .exe,如果失败,则抛出FileNotFoundException并在 catch 块中创建一个弹出框,提醒用户他们需要做什么。

于 2012-12-05T18:25:19.087 回答