uni-app App端 Error无法获取到cause
uni-app App端 Error无法获取到cause
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | macOS 14.4.1 | CLI |
| Android | Android 14 | |
| 小米 | ||
| Redmi K50 Ultra |
产品分类:uniapp/App
PC开发环境操作系统:Mac
手机系统:Android
手机系统版本号:Android 14
页面类型:vue
vue版本:vue3
打包方式:云端
CLI版本号:vite 5.2.8
示例代码:
onShow(() => {
try {
throw new Error('全局错误处理', { cause: 333 });
} catch (error) {
console.log(error.cause, 'error.cause', error); //error.cause真机运行安卓App为undefined
}
})
操作步骤:
onShow(() => {
try {
throw new Error('全局错误处理', { cause: 333 });
} catch (error) {
console.log(error.cause, 'error.cause', error); //error.cause真机运行安卓App为undefined
}
})
预期结果:
输出error.cause为333
实际结果:
真机运行安卓App为undefined,h5和微信小程序正常输出333
bug描述:
更多关于uni-app App端 Error无法获取到cause的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app App端 Error无法获取到cause的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的兼容性问题。在Android平台的JavaScript环境中,Error构造函数的第二个参数(包含cause属性的options对象)支持不完整,导致无法正确获取cause属性。
解决方案:
- 使用自定义错误类替代:
class CustomError extends Error {
constructor(message, cause) {
super(message);
this.cause = cause;
}
}
onShow(() => {
try {
throw new CustomError('全局错误处理', 333);
} catch (error) {
console.log(error.cause, 'error.cause', error);
}
})
- 使用额外属性存储cause值:
onShow(() => {
try {
const error = new Error('全局错误处理');
error.cause = 333;
throw error;
} catch (error) {
console.log(error.cause, 'error.cause', error);
}
})

