开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 4777|回复: 14
收起左侧

[易语言纯源码] 程序报错,取错误信息并上传

[复制链接]
结帖率:94% (66/70)
发表于 2018-7-15 10:28:08 | 显示全部楼层 |阅读模式   上海市上海市
分享源码
界面截图: -
是否带模块: -
备注说明: -
本帖最后由 puti 于 2018-7-15 10:34 编辑

QQ图片20180715072911.png
程序中数组变量多了,难免马虎,出现数组下标超出范围的事情。这肯定是由于调用数组的时候,判断不严谨。
之前以为出现这种错误,程序就会停止运行了。
无意中才发现,在另一条线程中的子程序还在正常运行。就想到了取窗口错误信息并上传了,当然上传完可以自动重启。

进入测试
QQ截图20180715073723.png
用精益助手查看窗口信息,提示数组错误的窗口是这个信息。
如果有其他的报错信息,大家可以把截图发出来。大家一起收集一下。
QQ图片20180715101208.png
然后就可以循环窗口控件的内容,我们一般只取标签的内容。
按钮的标题就不取了,无非就是 确定 取消 忽略 重试 等。
测试代码
QQ图片20180715102059.png
源码中有详细注释,如果对你有所帮助和启发,请帮忙给个好评。
测试代码.e (677.71 KB, 下载次数: 30)

点评

我在本帖10楼发了 我根据你的代码写的优化版,修复了一些BUG,加了一些功能   云南省西双版纳傣族自治州  发表于 2018-7-25 21:09

评分

参与人数 3好评 +3 精币 +6 收起 理由
阳光男人 + 1 + 1 感谢分享,使用效果不错,免费开源并写有注释供大家学习,值得鼓励!
love355024 + 1 新技能已get√
1051496412 + 1 + 5 奉上小小红包希望笑纳

查看全部评分


本帖被以下淘专辑推荐:

  • · 麦田|主题: 15, 订阅: 1
结帖率:100% (26/26)
发表于 2018-7-25 21:03:54 | 显示全部楼层   云南省西双版纳傣族自治州
@puti 不知道刚刚为啥艾特失败
回复 支持 反对

使用道具 举报

结帖率:100% (26/26)
发表于 2018-7-25 21:01:50 | 显示全部楼层   云南省西双版纳傣族自治州
本帖最后由 阳光男人 于 2018-7-25 21:15 编辑

@puti      你的代码还有一个BUG,只要是易语言编写的程序弹出错误窗口都会检测到,只要窗口标题为“错误”基本都会检测到,我改了一下只会检测自身进程的还加了一个可以弹出自己的错误窗口,不会检测到其他的,还有一个问题,信息框标题为错误也会检测到
https://lanzoux.com/i1hio8d(不知道为什么在论坛上上传失败,所以外链分享吧)

点评

前面上传错了,现在重新编辑发出来了,https://www.lanzous.com/i1hio8d   云南省西双版纳傣族自治州  发表于 2018-7-25 21:15

评分

参与人数 1好评 +1 精币 +2 收起 理由
外星人群控 + 1 + 2 辛苦了

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:100% (26/26)
发表于 2018-7-23 17:25:03 | 显示全部楼层   云南省西双版纳傣族自治州
本帖最后由 阳光男人 于 2018-7-23 17:30 编辑

易语言5.8版本的错误信息已经能获取到错误代码的位置
回复 支持 反对

使用道具 举报

结帖率:100% (26/26)
发表于 2018-7-23 17:24:46 | 显示全部楼层   云南省西双版纳傣族自治州
@puti 我加了一些代码,在获取到错误内容后可以发送到邮箱内,并且软件过程中关闭不了错误窗口,直到软件代码执行完才能关闭(通过精易模块命令完成的),另外易语言5.8错误信息已经能定位到错误代码的位置


  
窗口程序集名保 留  保 留备 注
窗口程序集_窗口1   
变量名类 型数组备 注
句柄_错误窗口整数型  
集_错误信息文本型  

子程序名返回值类型公开备 注
_窗口1_创建完毕  
' 线程_启动 (&监控错误, , )
子程序名返回值类型公开备 注
_按钮_出现错误_被单击  
变量名类 型静态数组备 注
A数组整数型0空数组
调试输出 (A数组 [1])
子程序名返回值类型公开备 注
_按钮_启动线程监控_被单击 如果有朋友能监控到是哪个子程序错误或者哪个命令错误的,希望能@我,先谢谢了
' 方便演示,启动监控就放在了按钮下。实际运用的时候,最好是放在窗口创建完成里面
线程_启动 (&监控错误, , )
子程序名返回值类型公开备 注
监控错误  
变量名类 型静态数组备 注
句柄_子窗口整数型 
' win10 64位环境中,用精益模块的枚举子窗口命令,取句柄数组失败,不知是何原因,就直接用了API。
判断循环首 ()
' 只测数组下标超出范围的错误窗口,没测其他崩溃原因的窗口
句柄_错误窗口 = 窗口_取句柄 (, , “#32770”, “错误”)
如果真 (句柄_错误窗口 ≠ 0)
调试输出 (“出现错误窗口”, 句柄_错误窗口)
' 调用精易模块里的命令,这样可以让错误窗口不能关闭等操作结束完后再关闭
窗口_锁住解锁 (句柄_错误窗口, )
窗口_禁止关闭 (句柄_错误窗口, )
' 实际测试中,窗口需要载入完成,才能取出错误信息
判断循环首 (窗口_是否可见 (句柄_错误窗口))
程序_延时 (500)
判断循环尾 ()
' 遍历错误窗口的标签标题,类名是Static,按钮的标题就不取了,无非就是 确定 取消 忽略 重试 等。
句柄_子窗口 = FindWindowEx (句柄_错误窗口, 0, “Static”, 字符 (0))
判断循环首 (句柄_子窗口 ≠ 0)
集_错误信息 = 集_错误信息 + “--”取窗口标题 (句柄_子窗口)
句柄_子窗口 = FindWindowEx (句柄_错误窗口, 句柄_子窗口, “Static”, 字符 (0))
判断循环尾 ()
线程_启动 (&上传错误信息)
返回 ()

' 程序_延时 (200) '在实际项目中,最好加延时,测试的时候就不加了
判断循环尾 ()
子程序名返回值类型公开备 注
上传错误信息  
' 将错误信息发到邮箱里更加方便修复程序BUG
邮箱发信上传错误信息 ()
调试输出 (集_错误信息)
调试输出 (“上传错误信息成功”)
调试输出 (“自动重启程序”)
窗口_锁住解锁 (句柄_错误窗口, )
窗口_禁止关闭 (句柄_错误窗口, )
子程序名返回值类型公开备 注
邮箱发信上传错误信息  
' 我用的是tom邮箱所以这里我测试的服务器是tom邮箱的,自己根据自己的实际情况修改
连接发信服务器 (“smtp.tom.com”, 25, “邮箱账号”, “邮箱密码”, 2000)
延迟 (1000)
发送邮件 (“邮件主题”, 集_错误信息, “收件人邮箱”, , , “发件人邮箱”, )
延迟 (500)


i支持库列表   支持库注释   
spec特殊功能支持库
eAPI应用接口支持库
internet互联网支持库

评分

参与人数 1好评 +1 精币 +2 收起 理由
外星人群控 + 1 + 2 还没升级到5.8 以后就好了

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:80% (8/10)

签到天数: 2 天

发表于 2018-7-17 21:20:41 | 显示全部楼层   广西壮族自治区来宾市
奉上小小红包希望笑纳
回复 支持 反对

使用道具 举报

结帖率:60% (3/5)

签到天数: 10 天

发表于 2018-7-17 10:52:15 | 显示全部楼层   北京市北京市
补一个源码

1.e

2.44 KB, 下载次数: 9, 下载积分: 精币 -2 枚

评分

参与人数 1好评 +1 精币 +2 收起 理由
外星人群控 + 1 + 2 以前没用过,这个也好用

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:60% (3/5)

签到天数: 10 天

发表于 2018-7-17 10:45:41 | 显示全部楼层   北京市北京市
本帖最后由 dulang 于 2018-7-17 10:53 编辑
puti 发表于 2018-7-15 11:20
这个只能知道出现了错误,但是不知道错误的信息,有点鸡肋

调用格式: 〈无返回值〉 置错误提示管理 ([子程序指针 用作进行错误提示的子程序]) - 系统核心支持库->其他
    英文名称:SetErrorManger
    本命令用来设置当运行时如果产生了导致程序崩溃的严重错误时用来对该错误进行详细提示的子程序地址,如果未进行此项设置,发生严重错误时运行时环境将自动提示该错误的详细信息并直接退出。本命令为高级命令。
    参数<1>的名称为“用作进行错误提示的子程序”,类型为“子程序指针(SubPtr)”,可以被省略。注意该子程序必须接收两个参数,第一个参数为整数型,用作接收错误代码第二个参数为文本型,用作接收详细错误文本。同时该子程序必须返回一个逻辑值,返回真表示已经自行处理完毕,系统将不再显示该错误信息,返回假表示由系统来继续显示该错误信息。以上设置必须完全正确,否则结果不能预测,另外,还请注意以下几点: 1、该错误提示子程序不要再引发新的错误; 2、在进入该错误提示子程序后,系统将自动关闭事件消息通知处理机制,也就是说任何事件将无法得到响应; 3、无论如何,当该子程序调用退出后,系统将自动将整个应用程序关闭。  如果省略本参数,系统将恢复错误提示的默认处理方式。
补个源码:
1.e (2.44 KB, 下载次数: 3)
回复 支持 反对

使用道具 举报

发表于 2018-7-16 14:31:07 | 显示全部楼层   河南省郑州市
管用,厉害了,hhh
回复 支持 反对

使用道具 举报

结帖率:97% (32/33)

签到天数: 3 天

发表于 2018-7-16 13:10:45 | 显示全部楼层   山西省运城市
这个好。给力
回复 支持 反对

使用道具 举报

结帖率:94% (66/70)

签到天数: 13 天

 楼主| 发表于 2018-7-15 11:20:06 | 显示全部楼层   上海市上海市
Aishanginfo 发表于 2018-7-15 10:37
易语言自带一个命令叫:置错误提示管理 ()  程序出错的时候会回调子程序传入错误信息!这个会更简单方便!

这个只能知道出现了错误,但是不知道错误的信息,有点鸡肋
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表