【发布时间】:2013-02-22 08:01:48
【问题描述】:
所以我已经和this issue 斗争了大约一个星期,我认为我知道这个问题,但我不想在那里报告答案,直到我确定它为止。
简而言之,我在尝试使用 SerialPort.Open() 命令时收到 IOException。事实证明,这是很常见的,大多数终端程序实际上也是如此,但他们只是忽略了它。请阅读我上面的帖子以获取完整的故事。现在我想做的是忽略 IOException 但仍然打开串口。我不能用 try/catch 做到这一点,或者至少我不知道怎么做。
我想知道有没有办法尝试一些事情并以某种方式声明“我知道会抛出一个问题,这是一个安全的问题,我选择忽略异常并继续执行任务”。需要明确的是,我不想忽略错误然后继续。我想忽略错误并仍然完成操作。
以下是我的最佳猜测,但它不起作用。
try
{
serialPort1.Open();
}
catch (System.IO.IOException)
{
MessageBox.Show("An IO Exception occurred.");
}
finally
{
//SAFELY IGNORE ERROR AND DO TASK ANYWAY HERE
}
如果有人能帮我解决这个问题,我将不胜感激。
编辑:如果我之后添加代码serialport1.Open,我会得到:
这与没有 try/catch 的情况基本相同。我想做的是说我正在尝试这样做:我不在乎它会引发错误,无论如何都要这样做。
【问题讨论】:
-
如果您再试一次,serialPort1.Open() 似乎不会成功。什么都没有改变,为什么你会期待不同的结果?
-
您确定问题出在 finally 块而不是该 finally 块中的代码吗?
-
你是说当你调用 Open() 时,串口实际上并没有因为错误打开?
-
是的,这正是我要说的。
-
您可以忽略异常,但是您仍然不会打开串行端口。在某些情况下,您必须有嵌套的 try/catch,但看起来情况并非如此。我建议您尝试找到一种访问串行端口的替代方法,您很可能需要做一些较低级别的事情。
标签: c# serial-port ioexception