概述
如何取出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 捕获异常并处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复