我是靠谱客的博主 调皮往事,最近开发中收集的这篇文章主要介绍autojs 捕获异常并处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

如何取出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 捕获异常并处理的全部内容,希望文章能够帮你解决autojs 捕获异常并处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部