首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将异常从我的类传递到我的窗体

将异常从我的类传递到我的窗体
EN

Stack Overflow用户
提问于 2012-12-12 23:39:16
回答 1查看 59关注 0票数 0

如何从类中获取异常以显示为windows错误?

这是我的班级:

代码语言:javascript
复制
public class Editcap
{
    private string _newFileName;

    public void convertFileToLibpcap(string filePath)
    {
        FileInfo fileInfo = new FileInfo(filePath);
        _newFileName = fileInfo.FullName.Replace(fileInfo.Extension, "_new") + ".pcap";
        invokeProcess(WiresharkProcesses.Editcap, string.Format("{2}{0}{2} -F libpcap {2}{1}{2}", fileInfo.FullName, _newFileName, "\""));
        deleteFile(filePath);
    }

    private void deleteFile(string filePath)
    {
        try
        {
            File.Delete(filePath);
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
    }

    public string getNewFileName()
    {
        return _newFileName;
    }
}

在我的表单中:

该函数创建具有不同扩展名的新wireshark文件,并应删除旧文件。如果删除失败,我想在弹出窗口中显示错误消息

代码语言:javascript
复制
Editcap editpcap = new Editcap();
editpcap.convertFileToLibpcap(file.FullName);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-12 23:46:09

你不需要做任何事情,异常会自己冒泡出来;这就是它们的工作方式。

只需在调用代码周围添加一个Try/Catch

代码语言:javascript
复制
try
{
    Editcap editpcap = new Editcap();
    editpcap.convertFileToLibpcap(file.FullName);
}
catch(Exception e)
{
    MessageBox.Show("There was an error deleting the file.");
}

请注意,在deleteFile方法中捕获然后重新抛出新的异常并不需要(实际上也没有一些危害)。您正在将异常的类型从更具体和信息更丰富的IOException更改为表达性较差的Exception,并且还提取了大量堆栈跟踪信息。最好从deleteFile中完全删除try/catch。这也意味着您可以更改调用代码以捕获IOException,而不是全局Exception。通过这样做,您可能会对不同的异常使用不同的catch块,从而允许您以不同的方式对待它们(可能会因为一种类型而崩溃,为另一种类型记录错误,向用户显示其他类型的消息,等等)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13843255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档