小程序
小游戏
企业微信
微信支付
扫描小程序码分享
对于特定的情况需要抛出异常中断方法的执行并对其进行处理,发现定义的异常抛出后,无法利用try...catch...捕获!!!,什么鬼!!!
10 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
导致这个问题的原因是因为我们框架本身会捕获 setInterval setTimeout 里的异常,用于 mp 上的异常上报。
如果确实要实现的话,可以在 setInterval 上套一层来实现
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
你好,请具体描述问题出现的流程,并提供能复现问题的简单代码示例。
你可以用 Promise处理。
好像是,我在js试了一下也是不行,估计是单线程异步造成的,可是这样就达不到中断方法执行的目的了
兄弟,你这是异步事件里面的异常,需要在异步里捕获。
testThrowException:
function
() {
let sec = 0;
const timer = setInterval(() => {
sec++;
if
(sec > 5) {
console.info(
'即将清除timer'
);
clearInterval(timer);
'已经清除timer'
try
{
throw
new
Error(
'网络超时'
}
catch
(err){
console.log(err)
}, 1000);
},
上述代码有小错误,改为console.log(err);
会有这个还是因为我们团队发现在弱网情况下(IOS开发者工具very bad network),一次请求多个接口时(只是这种情况还是普遍情况就不知道了),json中设置的
"networkTimeout": { "request": 10000, "downloadFile": 10000 },
无效,实际请求的超时并没有收到异常提示,因此自己想计时抛出异常。
tryTestThrowException() {
testThrowException();
(err) {
console.log(e);
testThrowException() {
Page({
onShow:
console.log(
'err: '
, err);
tryTestThrowException();
})
参考了http://developers.weixin.qq.com/blogdetail?action=get_post_info&docid=24db43fe9b73ad313ff51fab1a3ef4f0&highline=try&token=&lang=zh_CN修改,总之要么无法捕获异常,要么无法中断执行。小程序框架把exception截获不合理哈😂
js可以try catch吧
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
导致这个问题的原因是因为我们框架本身会捕获 setInterval setTimeout 里的异常,用于 mp 上的异常上报。
如果确实要实现的话,可以在 setInterval 上套一层来实现
你好,请具体描述问题出现的流程,并提供能复现问题的简单代码示例。
你可以用 Promise处理。
好像是,我在js试了一下也是不行,估计是单线程异步造成的,可是这样就达不到中断方法执行的目的了
兄弟,你这是异步事件里面的异常,需要在异步里捕获。
testThrowException:
function
() {
let sec = 0;
const timer = setInterval(() => {
sec++;
if
(sec > 5) {
console.info(
'即将清除timer'
);
clearInterval(timer);
console.info(
'已经清除timer'
);
try
{
throw
new
Error(
'网络超时'
);
}
catch
(err){
console.log(err)
}
}
}, 1000);
},
上述代码有小错误,改为console.log(err);
会有这个还是因为我们团队发现在弱网情况下(IOS开发者工具very bad network),一次请求多个接口时(只是这种情况还是普遍情况就不知道了),json中设置的
"networkTimeout": { "request": 10000, "downloadFile": 10000 },
无效,实际请求的超时并没有收到异常提示,因此自己想计时抛出异常。
function
tryTestThrowException() {
try
{
testThrowException();
}
catch
(err) {
console.log(e);
}
}
function
testThrowException() {
let sec = 0;
const timer = setInterval(() => {
sec++;
if
(sec > 5) {
console.info(
'即将清除timer'
);
clearInterval(timer);
console.info(
'已经清除timer'
);
throw
new
Error(
'网络超时'
);
}
}, 1000);
}
Page({
onShow:
function
() {
try
{
testThrowException();
}
catch
(err) {
console.log(
'err: '
, err);
}
tryTestThrowException();
}
})
参考了http://developers.weixin.qq.com/blogdetail?action=get_post_info&docid=24db43fe9b73ad313ff51fab1a3ef4f0&highline=try&token=&lang=zh_CN修改,总之要么无法捕获异常,要么无法中断执行。小程序框架把exception截获不合理哈😂
js可以try catch吧