如何从类中获取异常以显示为windows错误?
这是我的班级:
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文件,并应删除旧文件。如果删除失败,我想在弹出窗口中显示错误消息
Editcap editpcap = new Editcap();
editpcap.convertFileToLibpcap(file.FullName);发布于 2012-12-12 23:46:09
你不需要做任何事情,异常会自己冒泡出来;这就是它们的工作方式。
只需在调用代码周围添加一个Try/Catch:
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块,从而允许您以不同的方式对待它们(可能会因为一种类型而崩溃,为另一种类型记录错误,向用户显示其他类型的消息,等等)。
https://stackoverflow.com/questions/13843255
复制相似问题