如何取出autojs的自定义异常的异常信息?

autojs的异常捕获同java的捕获,不过在catch中不需要添加异常的类型,就像在定义变量时不用指定他的类型一样,js是弱类型的语言。

try{click(0,0);
}catch(e){log(e);
}

因为我调用了无障碍的功能,再没有开启无障碍或无障碍异常时会抛出autojs自定义的一个异常,会进入他的catch中。异常信息正常打印

[JavaException: com.stardust.autojs.runtime.exception.ScriptException: 无障碍服务未启动] 

问题来了,如何把这个excetpion的异常信息打出来呢?

很显然,exception都会实现Throwable接口(或继承这个类的子类并重写方法),那肯定会有getMessage()咯?用用试试看

try{click(0,0);
}catch(e){log(e);log(e.getMessage());
}

控制台输出如下

TypeError:     在对象JavaException: com.stardust.autojs.runtime.exception.ScriptException: 无障碍服务未启动中找不到函数getMessage.

这就很奇怪咯,也就是说他这个自定义的异常不属于Throwable。那就反射一下看看他内部的方法

用class().getMethods()即可获取他内部所有的public方法

try{click(0,0);
}catch(e){log(e);log(e.getClass().getMethods());
}
TypeError:     在对象JavaException: com.stardust.autojs.runtime.exception.ScriptException: 无障碍服务未启动中找不到函数getClass.

这就奇怪咯,反射都反射不来。看一下这个异常倒底是个啥么玩意

try{click(0,0);
}catch(e){log(e);console.log("JavaException",e instanceof JavaException);console.log("com.stardust.autojs.runtime.exception.ScriptException",e instanceof com.stardust.autojs.runtime.exception.ScriptException);
}

控制台输出

JavaException true
com.stardust.autojs.runtime.exception.ScriptException false 

太神奇了,我只想知道JavaException是啥东东。jdk上没有这个类,估计是autojs自己写的。

我想了个办法,可以用冒号分割,最后一个冒号后面的都是错误信息提示,上代码

/*** 获取autojs自定义异常的错误提示信息* @param {JavaException} e autojs自定义异常(try/catch中捕获的异常)* @returns */function getMessageFromJavaException(e){//将异常转成字符串 js是弱类型 直接赋值即可e = e.toString();//从最后一个冒号开始截取 到 末尾return e.substring(e.lastIndexOf(":") + 1);
}

完美

因为我没想到别的啥异常,也不好造,自己抛出一个异常,并测试

try{throw new java.lang.RuntimeException("这是exception")
}catch(e){log(getMessageFromJavaException(e));
}
/*** 获取autojs自定义异常的错误提示信息* @param {JavaException} e autojs自定义异常(try/catch中捕获的异常)* @returns */function getMessageFromJavaException(e){//将异常转成字符串 js是弱类型 直接赋值即可e = e.toString();//从最后一个冒号开始截取 到 末尾return e.substring(e.lastIndexOf(":") + 1);
}

控制台

这是exception 

大功告成,虽然歪门邪道,但是效果有了,哈哈

autojs 捕获异常并处理相关推荐

  1. 【Auto.JS】Autojs官方提取文档使用说明函数 (2)

    接上一篇文章:Autojs官方提取文档使用说明函数 (1) Images Stability: 2 - Stable images模块提供了一些手机设备中常见的图片处理函数,包括截图.读写图片.图片剪 ...

  2. C++ 笔记(20)— 异常处理(抛出异常、捕获异常)

    异常提供了一种转移程序控制权的方式. C++ 异常处理涉及到三个关键字: try . catch . throw . throw : 当问题出现时,程序会抛出一个异常.这是通过使用 throw 关键字 ...

  3. appium学习【二】:用try捕获异常后,用例的执行结果为pass

    appium学习[二]:用try捕获异常后,用例的执行结果为pass 参考文章: (1)appium学习[二]:用try捕获异常后,用例的执行结果为pass (2)https://www.cnblog ...

  4. Golang中的panic和recover(捕获异常)

    Golang中的panic和recover(捕获异常) 参考文章: (1)Golang中的panic和recover(捕获异常) (2)https://www.cnblogs.com/zhzhlong ...

  5. Spring事务异常回滚,try catch 捕获异常不回滚

    Spring事务异常回滚,try catch 捕获异常不回滚 参考文章: (1)Spring事务异常回滚,try catch 捕获异常不回滚 (2)https://www.cnblogs.com/GH ...

  6. java异常——捕获异常+再次抛出异常与异常链

    java异常--捕获异常+再次抛出异常与异常链 参考文章: (1)java异常--捕获异常+再次抛出异常与异常链 (2)https://www.cnblogs.com/jpfss/p/9454592. ...

  7. Spring事务异常回滚,捕获异常不抛出就不会回滚

    Spring事务异常回滚,捕获异常不抛出就不会回滚 参考文章: (1)Spring事务异常回滚,捕获异常不抛出就不会回滚 (2)https://www.cnblogs.com/chen-lhx/p/6 ...

  8. Python 使用sys.exc_info自己捕获异常详细信息

    Python 使用sys.exc_info自己捕获异常详细信息 参考文章: (1)Python 使用sys.exc_info自己捕获异常详细信息 (2)https://www.cnblogs.com/ ...

  9. try catch 自定义捕获异常

    try catch 自定义捕获异常 参考文章: (1)try catch 自定义捕获异常 (2)https://www.cnblogs.com/cxy0210/p/11761861.html 备忘一下 ...

最新文章

  1. 双十一报名截止,决赛在即!AI Challenger2018极客峰会免费抢票!
  2. RAC8——scan ip的理解
  3. 《短文本数据理解(1)》一1.3 短文本理解框架
  4. SQL语句错误:Operand should contain 1 column(s)【查询多个字段不用加括号】
  5. Django 博客教程(三):创建应用和编写数据库模型
  6. gc机制 php7_PHP7垃圾回收机制详解(附GC处理完整流程图)
  7. Android项目目录结构中各个文件夹的作用
  8. 善用win7中的资源监视器
  9. 地址规范化--城市三级联动(layui) (A)
  10. 用 PS 去除图片中文字的方法
  11. U盘/移动硬盘 有写保护怎么解除【未解决】
  12. nfs总结之生产实例
  13. 中国网络游戏行业研究报告-2010
  14. html表格日期选框,table单元格编辑新增下拉框(select支持单或多选)、时间选择(date)功能! · Pull Request !26 · 贤心/layui - Gitee.com...
  15. 【10个精品网站】找素材、找图片、PDF在线工具、免费图片降噪修复、免费可商用字体、PPT模板
  16. 今天14:00 | NeurIPS 专场一 青年科学家专场
  17. maya2018的uv导入和导出
  18. DiDi for Android协议分析
  19. mt7688 OpenWrt 编译
  20. cordova添加android平台时选择安装版本

热门文章

  1. 前端背景图放置_web前端入门到实战:css 中的背景图片小技巧和存在的坑
  2. QTabBar 和 QTabWidget部件 页签
  3. 4个高质量站点推荐值得收藏
  4. 前TT(前T/T)与后TT(后T/T),以及信用证(LC,L/C)付款方式比较
  5. 06.看板实践——限制在制品
  6. 2019网易互娱8.9笔试
  7. P1685 飞跃悬崖
  8. linux 编译过程中acx_pthread.m4类错误解决办法
  9. 《智能路由器开发指南》核心笔记(全)——转载的
  10. 利用python下载fnl数据方法