我有一个在try块中调用setInterval的代码,我清除了代码末尾的间隔,但是如果我的代码捕获和异常,setInterval函数将永远运行。如果我在try块中创建的sqsInterval在捕获中不存在,我如何清除此?
const createInterval = (message, queueUrl) => {
let timeout = parseInt(process.env.QUEUE_VISIBILITY_TIMEOUT, 10);
const interval = setInterval(() => {
timeout += parseInt(process.env.VISIBILITY_TIMEOUT_INCREMENT, 10);
if (timeout > 43200) {
return;
}
const params = {
QueueUrl: queueUrl,
ReceiptHandle: message.ReceiptHandle,
VisibilityTimeout: timeout,
};
sqs.changeMessageVisibility(params, (err, data) => {
if (err) logger.error(err, err.stack);
else logger.info(JSON.stringify(data));
});
}, parseInt(process.env.TIMER_INTERVAL, 10));
return interval;
};
try {
// Starting time for complete clip project
const queueUrl = process.env.AWS_SQS_VIDEO_CLIPS_QUEUE_URL;
const sqsInterval = createInterval(message, queueUrl);
await sleep(30000);
clearInterval(sqsInterval);
logger.info(`Finished processing message - [MessageID: ${message.MessageId}], [ReceiptHandle: ${message.ReceiptHandle}] [MD5OfBody]: ${message.MD5OfBody} [noteId=${noteId}]`);
} catch (error) {
clearInterval(sqsInterval);
const sqsInterval
的作用域在try{}
中。用let
let sqsInterval;
try {
const queueUrl = process.env.AWS_SQS_VIDEO_CLIPS_QUEUE_URL;
sqsInterval = createInterval(message, queueUrl);
await sleep(30000);
clearInterval(sqsInterval);
logger.info(`Finished processing message - [MessageID: ${message.MessageId}], [ReceiptHandle: ${message.ReceiptHandle}] [MD5OfBody]: ${message.MD5OfBody} [noteId=${noteId}]`);
} catch (error) {
clearInterval(sqsInterval);
}
EDIT应该返回true或false,但它的抛出错误
问题内容: 有人告诉我,在Java中,可以在try块中捕获未检查的异常,但是如果捕获了它,就不称为已检查的异常吗? 问题答案: 未检查的异常是不需要在- 块中捕获的异常。未检查的异常是或类的子类。 已检查的异常是需要在- 块中捕获的异常。 可在Java语言规范的11.2节:编译时检查异常中找到检查和未检查异常的定义: 未检查的异常类是类及其子类,以及类及其子类。所有其他异常类都是检查的异常类。 仅
问题内容: 我知道我可以做到: 我也可以这样做: 但是,如果我想在两个不同的异常中做同样的事情,那么我现在想到的最好的方法就是: 有什么办法可以做这样的事情(因为在两个异常中都采取的措施是): 现在,这确实不起作用,因为它与以下语法匹配: 因此,我捕捉两个截然不同的异常的努力并未完全实现。 有没有办法做到这一点? 问题答案: 例如,子句可以将多个异常命名为带括号的元组。 或者,仅对于Python
问题内容: 一旦在此代码中捕获到异常,该方法就会运行,但是一旦我输入一个数字,程序就会关闭,并显示“生成成功”消息。一旦发生异常,是否有任何方法可以返回while循环? 问题答案: 将 try / catch 放入 while循环中 :
每当我的VNC连接被终止时(每当我重新启动VM时),我都试图捕捉一个异常,并且我试图忽略它以继续我的Jython脚本。我不知道如何编写try catch语句来捕获异常,因为它起源于Java。这是一个sikuliX脚本。
我正在尝试开发一个滑块,如果用户没有点击后退或前进按钮,它每5秒就会改变一次。 但是如果他(用户)这样做了,间隔会触发多次。。。为什么? 我将间隔保存在一个变量中,并清除该变量,因此我不知道为什么这不起作用。。。但是看看你自己: }); 感谢阅读;-)