LabVIEW编程:错误处理刘亮我们为什么要关心错误处理?•应用程序的功能性、调试•用户体验•安全性、需求错误举例•错误的用户输入•通讯错误(硬件、网络等)•HTTP404–FileNotFound•编程环境•覆盖系统重要文件Aproblemhasbeendetectedandwindowshasbeenshutdowntopreventdamagetoyourcomputer.Theproblemseemstobecausedbythefollowingfile:SPCMDCON.SYSPAGE_FAULT_IN_NONPAGED_AREAIfthisisthefirsttimeyou'veseenthisstoperrorscreen,restartyourcomputer.Ifthisscreenappearsagain,followthesesteps:Checktomakesureanynewhardwareorsoftwareisproperlyinstalled.Ifthisisanewinstallation,askyourhardwareorsoftwaremanufacturerforanyWindowsupdatesyoumightneed.Ifproblemscontinue,disableorremoveanynewlyinstalledhardwareorsoftware.DisableBIOSmemoryoptionssuchascachingorshadowing.IfyouneedtouseSafeModetoremoveordisablecomponents,restartyourcomputer,pressF8toselectAdvancedStartupOptions,andthenselectSafeMode.Technicalinformation:***STOP:0x00000050(0xFD3094C2,0x00000001,0xFBFE7617,0x00000000)***SPCMDCON.SYS-AddressFBFE7617baseatFBFE5000,DateStamp3d6dd67c错误处理•预判、检测和解决程序设计、通讯和应用过程中的错误。错误基本原理基本错误处理技术高级错误处理架构错误原理•应用程序的错误,通常由一个错误代码和错误位置组成•LabVIEW错误簇错误vs.警告•错误状态=真:错误•错误状态=假,错误代码≠0:警告自动错误处理•默认行为•当有错误发生时:–执行被中止–发生错误的子VI被高亮显示–显示错误对话框自动错误处理•关闭自动错误处理–工具选项程序框图错误处理–文件VI属性执行自动错误处理•支持VIScripting自动错误处理手动错误处理•修改(关闭)默认设置•按顺序链接所有子VI的错误•程序员负责处理错误手动错误处理错误结构•错误条件结构–用于手动错误处理–在子VI中传递错误的同时,避免执行代码•错误监视While/For循环–错误出现时,可以终止循环错误结构错误相关VIs错误相关VIS自定义错误代码•为终端用户提供更有价值的信息•推荐错误代码范围:-8999–(-8000),5000–9999,500000-599999•工具高级编辑错误代码•文件存储在..\user.lib\errors自定义错误代码-1自定义错误编码•方式2:包装通用错误处理器自定义错误编码-2自定义错误编码-3基本错误处理技术•特定的错误处理•错误报告•错误记录•错误传递•错误分类及描述•错误通信特定的错误处理•特定位置的代码去回应特定错误代码的行为•例如:–忽略–重试–纠正特定的错误处理:分析一段代码•这段代码会有问题吗?•我能为这段代码做些什么吗(包括记录、报告)?•处理这段代码需要额外的代码吗?•有什么将影响后续代码吗?•如何影响后续代码?特定的错误处理:准则•避免错误影响后续的代码–发生错误时,并不是所有的代码行为都相同–使用条件结构决定执行哪部分代码特定的错误处理:范例特定的错误处理:范例特定的错误处理:范例特定的错误处理:范例特定的错误处理:可用工具•错误面板–通用错误处理器–清除错误•清楚特定错误–清楚全部或特定错误子VI•StructuredErrorHandler–SpecificErrorHandler快速VI清除特定或全部错误StructureErrorHander(SHE)•在ni.com搜索“SEH”•非常方便的错误处理工具•专有的技术支持•论坛特殊的错误处理:范例清除并通知特殊的错误处理:范例特殊的错误处理:范例错误报告•在用户界面上显示信息•需要的功能:–可理解的信息–本地化–用户响应–错误分类错误报告:工具•错误面板–简易错误处理器–通用错误处理器错误记录•创建一个错误的记录,以备将来参考•需要的功能:–可读的–高性能的–有限的寿命或存储空间错误记录:工具•桌面错误日志–指定文件路径–文字处理软件•Real-Time错误日志–lvrt_err_log.txt传递错误•执行期间,基于某些事情产生错误•通常使用自定义错误代码和信息–通常使用错误代码编辑器或文件定义–有的时候使用固定代码•不宜本地化、维护,没有好的性能•容易部署传递错误:工具•错误代码至错误簇转换–影响性能–避免在RIO等目标上使用•按名称捆绑–高性能–不搜索错误库•将错误分类•例如–警告–重要错误–用户错误–通信错误•记录错误的附加信息•例如–时间戳–发生次数–变量错误分类及描述错误分类及描述:工具•SEH–按等级分类–通知中包含时间戳和发生次数•扫描引擎故障–优先级–时间戳–发生次数错误通信•把错误从产生的地方传递到中央错误处理•需要的功能:–优先级–按发生次数过滤–为RT提供特殊的传递处理错误通信:工具•SHE•扫描引擎故障高级错误处理架构•针对错误的类别,而不是特定的错误代码•异步或系统范围的通信•例如:–记录错误到文件–显示或发送错误信息到人机界面–引导系统关闭或重启–通过安全状态输出中央错误处理代码错误处理代码优先级队列代码错误处理代码代码错误处理代码代码错误处理代码中央错误处理中央错误处理:工具•SEH–中央错误处理模版•扫描引擎故障–故障监视例程中央错误处理总结错误基本原理基本错误处理技术高级错误处理架构更多技术资源下载GSDZone.net/community敬请进入下一环节