当前位置: 首页 > 知识库问答 >
问题:

在JavaScript中正确使用try/catch块

陈法
2023-03-14

我有一个try/catch块,我已将其写入JetBrains网络StormIDE,它会给我一个错误。错误如下:“本地捕获的异常的‘抛出’/此检查报告任何JavaScript抛出语句的实例,其异常总是通过包含try语句来捕获。使用抛出语句作为“goto”来更改本地控制流可能会令人困惑。”

try {
    var invoice = parseInt(localStorage[0]);
    if (isNaN(invoice)) {
        console.warn("invoice NaN; let's fix that...");
        throw "executing catch";
    }
}
catch (e) {
    console.log(e);
    this.test();
    invoice = 1;
}
finally {
    localStorage[invoice] = JSON.stringify(Ticket);
    console.log("localStorage[" + invoice + '] : ' + localStorage[invoice]);
    localStorage[0] = parseInt(localStorage[0]) + 1;
}

如果我将活动从捕获块放入尝试块的 if 块中,那么我将不需要尝试/捕获/最终。那么,除了条件语句(if)之外,你怎么会抛出一个错误,又如何避免使用 throw 作为“goto”呢?

谢谢

共有1个答案

訾淇
2023-03-14

这功能相同,而且更干净。为什么扔/抓?

try {
    var invoice = parseInt(localStorage[0]);
    if(isNaN(invoice)){
        console.warn("invoice NaN; let's fix that...");
        console.log("executing catch");   // not really needed
        this.test();
        invoice = 1;
    }
} finally {
    localStorage[invoice] = JSON.stringify(Ticket);
    console.log("localStorage[" + invoice + '] : ' + localStorage[invoice]);
    localStorage[0] = parseInt(localStorage[0]) + 1;
}
 类似资料:
  • 问题内容: arowmy初始化工作正常斯威夫特<2,但是在斯威夫特2我在Xcode得到一个错误信息的。我认为我无法使用try catch块,因为此时super尚未初始化。“尝试”需要一个抛出的函数。 这是我的功能: Xcode的意思是: 但我不知道要按照此文档正确思考https://developer.apple.com/library/content/documentation/Swift/Co

  • 问题内容: 好的,这可能是一个非常愚蠢的问题,但是我发现关于此的PHP文档以及一些Internet搜索并没有使我对此有所任何了解。 什么时候应该使用try-catch块来改进我的应用程序? 我读过有人说我们应该仅使用try- catch块来防止致命错误。我读过别人的话说,我们应该只在意外错误上使用它(等什么?意外?如果它们是意外错误,如何使用try- catch防止它们出现?我应该将所有应用程序代

  • 是否有可能将函数包装在一个try捕获块中?它似乎对第一个函数不起作用,但是它会对这样声明的原型函数起作用吗? 例子:

  • 问题内容: 我正在尝试组成最紧凑的解决方案,以便仅使用nextInt()方法及其引发的排除错误从用户读取整数的方法……这是我现在拥有的代码: 因此,这应该做的是等待用户的 整数 。如果用户输入 0,则 结束程序。我的想法是尝试在用户使用 InputMismatchException 输入除整数以外的内容时排除这种情况(我知道捕获RuntimeException不是最佳实践)。引发异常时,将显示一条

  • 在其他支持try/catch的语言中,开发人员似乎比JavaScript更多地使用了该特性。这有原因吗?try/catch的JS实现有缺陷吗?