如何忽略异常并完成尝试

2024-03-02

所以我一直在奋斗这个问题 https://stackoverflow.com/questions/14885288/io-exception-error-when-using-serialport-open大约一周了,我想我知道这个问题,但我不想在那里报告答案,直到我把它固定下来。

简而言之,当我尝试使用SerialPort.Open()命令。事实证明,这是很常见的,大多数终端程序实际上也是这样做的,但它们只是忽略它。请阅读我上面的帖子以了解完整的故事。现在我想做的是忽略 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
        }

如果有人能帮助我解决这个问题,我将不胜感激。

EDIT: If I just add the code serialport1.Open afterwards I get: Screenshot of IOException

这基本上与没有 try/catch 时发生的情况相同。我想做的是说我正在尝试这样做:我不在乎它会引发错误,无论如何都要这样做。


一般来说,如果您有一行代码导致异常,并且无论异常是否发生,都需要完成额外的工作,那么您应该只使用catch,然后把你想做的事情放在外面(之后)try/catch.


对于您的特定情况(在您的其他问题中描述),您正在处理 .NET 的可怕破坏System.IO.Ports.SerialPort。打开串口成功,但是SerialPort.Open是一个复杂的方法,它做了很多额外的事情,并且如果任何额外的(和不必要的)事情失败,则坚持关闭端口。我发现了其他问题System.IO.Ports.SerialPort以及(例如无法通过内部设备名称打开端口)。 IMO,你越早摆脱System.IO.Ports.SerialPort更好。

您可以 p/调用 Win32 串行端口函数(CreateFile其余的是here http://msdn.microsoft.com/en-us/library/windows/desktop/aa363195.aspx)或找到已经编写了包装器库的人(我做到了,但它不公开)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何忽略异常并完成尝试 的相关文章

  • C++ 中的类 C# 事件,组合

    在过去的几个月里 我经常使用 C 并习惯了事件和委托 在类中使用组合非常容易 只需使用事件从组件获取消息 现在我正在尝试在 C 中做类似的事情 但不知道如何做 C 中的组合是如何完成的 我想到的唯一方法是继承 您从类派生并重写其函数以接收来
  • 实体框架迁移 - 启用自动迁移以及添加的迁移

    我在我的项目中使用实体框架 4 3 迁移 我想使用自动迁移 以便当我对域对象和上下文类进行修改时 我的数据库会在运行项目时自动更新 到目前为止我已经完成了这个工作 除了自动迁移之外 我还想使用一些添加的迁移 并且我希望应用程序在运行应用程序
  • 以有效的方式找到最近点

    我在 2d 平面上有一个点 例如 x0 y0 和一组 n 点 x1 y1 xn yn 我想在 a 中找到距离 x0 y0 最近的点比尝试所有要点要好得多 有什么解决办法吗 我还应该说我的观点是这样排序的 bool less point a
  • 查询父实体时导航属性为空

    下面是我的域实体的基类 public interface IBaseEntity public int Id get set public DateTime CreatedDate get set public DateTime Updat
  • C# - 如何在变量名中使用无效字符

    在 C 中 我正在构建一个类 出于讨论目的而在此处进行了简化 该类最终将被序列化为一些外部定义的 JSON schema http example com person json name John age 86 在我的代码中我会有类似的内
  • C:epoll和多线程

    我需要创建专门的 HTTP 服务器 为此我计划使用 epoll sycall 但我想利用多个处理器 核心 但我无法提出架构解决方案 ATM我的想法如下 使用自己的epoll描述符创建多个线程 主线程接受连接并将它们分配给线程epoll 但还
  • 如何在 g++ 中使用不同的 STL

    我想对 g 使用不同的 STL 而不是其默认的 libstdc 做到这一点最简单的方法是什么 我发现 nostdinc 标志禁止 g 查找其 STL 标头 但这只是编译时的事情 它仍然会使 g 链接到它自己的 STL 所以我需要找到一种方法
  • 为什么允许 C++ 编译器优化具有副作用的内存分配?

    另一个问题讨论优化器删除调用的合法性new 编译器是否允许优化堆内存分配 https stackoverflow com questions 31873616 is the compiler allowed to optimize out
  • C++ 多重继承关闭同名运算符

    是否可以从两个不同的抽象类继承仅返回类型不同的同名运算符 如果是这样 他们 实现运算符的语法是什么 使用 解析运算符的语法是什么 与任何其他虚函数相同 一般情况下的开销是多少 如果您可以向我提供参考或示例代码 将会有所帮助 thanks 1
  • 当“virtual”位于“class Foo : public virtual Bar”而不是“virtual void frob()”时,这意味着什么?

    我明白virtual在成员函数的上下文中 例如virtual void frob 但它在类声明的上下文中意味着什么 比如class Foo public virtual Bar 对于给定的方法 有 8 种情况源于以下三个位置是否存在 vir
  • 如何使用 System.Json 进行漂亮的打印?

    使用新的System Json 从 4 5 开始 http msdn microsoft com en us library system json 28v vs 95 29 aspx或同等的来自 Nuget 的 4 0 的 System
  • 使用带有 MSVC 2015 编译器的 QT Creator 5.8

    我是新来的C 和编程 我正在尝试做一个小项目 使用Qt and Qt Creator 我当时用的是MinGW compiler 但对于这个项目 我需要与MSVC compiler 因为我需要使用QtWebEngineWidgets I ha
  • 为什么 ReadOnlySpan 不能用作泛型委托和泛型方法的类型参数?

    我明白为什么ReadOnlySpan不能用作泛型类的类型参数 ReadOnlySpan仅是堆栈 因此它不能用作字段类型 字段成员像其容器对象一样存在于堆中 但是返回值和参数始终只是堆栈 所以为什么ReadOnlySpan不能用作泛型委托和泛
  • 使用 List.Sort(Comparison Comparison 在 C# 中对列表进行排序

    我创建了一个类 如下所示 public class StringMatch public int line num public int num of words 我创建了一个列表 List
  • 关闭/清理“混合”文件描述符/套接字

    当我使用accept 创建一个套接字并使用fdopen 从中创建一个文件时 我需要做什么来清理所有内容 我是否需要对 FILE 执行 fclose 对套接字执行 shutdown 和 close 还是只需要 shutdown 和 或 clo
  • 使用相同的 SqlConnection 对 SqlCommand.BeginExecuteNonQuery 进行多个并发调用

    我有一些可用的 C 代码 它使用 SqlConnection 创建临时表 例如 Foo 调用存储过程来填充这些临时表并将结果返回到 C 客户端 使用 C 对这些结果执行复杂的计算 并使用计算结果更新之前创建的临时表之一 由于整个过程中都会使
  • 使用accumulate计算数组double[]平均值的函数

    它一定是最常见的函数 每个人在某处都有代码片段 但我实际上花了不少于 1 5 小时在 SO 以及其他 C 网站上搜索它 但还没有找到解决方案 我想计算 a 的平均值double array 使用函数 我想将数组作为函数传递给参考 有数百万个
  • 如何在.Net中使用SQLCipher

    我想用C winform 读取一个SQLCipher数据库并找到一个开源项目SQLitePCL https github com ericsink SQLitePCL raw 但是我还没有找到这个使用的例子 而且文档也不是很多 有朋友用过这
  • 使用 Linq 获取当前和上一个项目

    我有一个 Offer 类 例如 public class Offer public int OfferID get set public DateTime OfferDate get set public int CustomerID ge
  • 在 C++ 中是否有一种简单的方法可以将由空格字符分隔的一行输入拆分为整数?

    我是一名 C 初学者 我一直在开发一个项目 在该项目中 您必须输入一些用空格分隔的整数 并且程序必须输出所有可能的整数排列 我知道在 python 中 这可以使用 int item for item in input split 但我不知道

随机推荐