< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

最近学习使用MSCOMM控件编写一个简单的串口收发程序,基本功能已经基本实现,但是在我选择已经被占用的串口时,系统会自动弹出“port already open”的提示,虽然会有提示,但是总是让人很不爽,想自己捕捉到这个错误进行处理。

找了好多资料,搜遍了GOOGLE都没有找到解决方法,后来只要自己解决了。

我发现MSCOMM控件的方法都调用InvokeHelper()函数进行处理,于是我在网上搜索InvokeHelper()抛出的异常,还真找到了。

这个函数将参数转换为VARIANTARG值,然后对OLE控件调用IDispatch::Invoke方法。如果对IDispatch::Invoke的调用失败,这个函数将抛出一个异常。如果IDispatch::Invoke返回的SCODE(状态码)是DISP_E_EXCEPTION,则这个函数抛出一个COleException对象;否则它抛出一个COleDispatchException对象。"

所以我使用TRY...CATCH...模块捕捉了COleDispatchException错误,终于实现了捕捉这个错误。

代码如下:

复制代码
1 TRY 
2 {
3       //TODO 要捕捉的语句
4 }
5 CATCH(COleDispatchException, e)
6 {
7       MessageBox("");
8 }
9 END_CATCH
复制代码

 

 

posted on   曾经的你|  阅读(704)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示