如何从我的班级中获取异常以显示为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);
答案 0 :(得分:2)
你不需要做任何事情,例外情况会自动冒出来;这是他们的工作方式。
只需在您的主叫代码周围添加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
块,允许您以不同方式对待它们(可能是一种类型崩溃,为另一种类型记录错误,向用户显示其他内容的消息等) )。