C# 捕获对象在代码…c之前引发的异常#
C#.Net 4.6.1 我正在使用第三方库。当迭代其对象时,我的程序会崩溃,因为我从库访问的属性引发了异常 因此,当我的程序到达这一行代码时,会引发异常:C# 捕获对象在代码…c之前引发的异常#,c#,.net,exception-handling,C#,.net,Exception Handling,C#.Net 4.6.1 我正在使用第三方库。当迭代其对象时,我的程序会崩溃,因为我从库访问的属性引发了异常 因此,当我的程序到达这一行代码时,会引发异常: case CellType.Formula: { cNew.CellFormula = "IFERROR(FF3 / EY3,\"\")"; cNew.SetCellFormula(cOld.CellFormula); //this is where it blows up break; } 调试代码时,我可以看
case CellType.Formula:
{
cNew.CellFormula = "IFERROR(FF3 / EY3,\"\")";
cNew.SetCellFormula(cOld.CellFormula); //this is where it blows up
break;
}
调试代码时,我可以看到抛出了异常。上图显示了这一点。因此,我知道library属性中出现了一些错误,我想做的是在使用该属性访问代码行之前捕获此错误,并继续执行应用程序
有没有办法检查一个对象是否存在异常,并告诉我的代码跳过它或做任何事情?例如:
if (cOld.CellFormula == Exception){
// do something
}
谢谢你打断我的话
cNew.SetCellFormula(cOld.CellFormula);
你可以试着抓住它,就像这样
try
{
cNew.SetCellFormula(cOld.CellFormula);
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
这将显示一个包含错误文本的消息框
如果您将此作为控制台应用程序运行,请替换
MessageBox.Show(e.Message);
与
这会将消息写入屏幕(记得在生产时将其取出!)您是否尝试过try catch?您是否不知道如何处理异常?停止你正在做的事。去买一些初级的C#books。那么你想在异常被抛出之前抓住它?不,那是不可能的。当然,您可以对代码进行结构化,使其不会首先引发异常,但如果您无法更改代码,您唯一的选择就是不执行引发异常的代码。我们不知道这个图书馆是怎么建的,所以我们不能回答这个问题。如果它在反序列化后首次使用对象的任何属性时抛出SerializationException(但这只是猜测),那么应该有一些属性指示成功或失败。如果没有,剩下的就是捕获异常。如果解决方案如此简单,为什么你们不发布呢?如果你不知道答案,不要评论。我想过这个,但我在想是否还有别的办法。我的代码已经在一个外部的try/catch块中,但是当它碰到这个块时,它就停止了显示。我正在努力避免表演的阻碍,试着接球。谢谢
Console.WriteLine(e.Message);