【问题标题】:How to fail with a fatal error or similar?如何因致命错误或类似错误而失败?
【发布时间】:2013-07-04 06:48:48
【问题描述】:

是否可以在特定条件下使用特定错误消息终止脚本?异常不是一种选择,因为它们可以被捕获,从而避免终止。

更新:

我更喜欢通用方法,但如果没有,那么它适用于浏览器内的 JavaScript。错误应该是静默的,错误信息应该只进入浏览器错误日志。

【问题讨论】:

  • 您的脚本是否在浏览器中运行?如果您不希望它被捕获,那么您的错误消息是针对谁的?也许你应该让你的问题不那么含糊。
  • @dystroy,对不起,我更新了问题。

标签: javascript fatal-error


【解决方案1】:

如果您的代码在 try 语句中,并且您正在寻找一种方法来阻止它出现某些错误,那么我认为您正在寻找 finally 块:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Statements?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FStatements#The_finally_Block

从该站点(并将烦人的 alert() 编辑为 console.log()),您可以找到以下示例:

function f() {
    try {
        console.log(0);
        throw "bogus";
    } catch(e) {
        console.log(1);
        return true; // this return statement is suspended until finally block has completed
        console.log(2); // not reachable
    } finally {
        console.log(3);
        return false; // overwrites the previous "return"
        console.log(4); // not reachable
    }
    // "return false" is executed now

    console.log(5); // not reachable
}
f(); // alerts 0, 1, 3; returns false

【讨论】:

  • 但是我不需要继续执行,我看不到finally 对我有什么帮助。我只需要脚本死掉,然后。
  • 注意,本例中最后一个console.log(5)没有被执行,也就是说一旦启动了未捕获的异常,进程就会死在这里。发生这种情况是因为最后一个返回 false;在最后的声明中。这个 try 语句在函数内部,所以它只停止函数,但是如果你把它放在脚本周围,它会在你启动一个未捕获的异常时停止脚本。
【解决方案2】:

不幸的是,我只能通过以下丑陋的解决方法来做到这一点:

var failWithFatalError; // A non-existent function
console.error (message + ' in ' + homebrewStackTraceFunction());
failWithFatalError();

【讨论】:

    猜你喜欢
    • 2020-06-18
    • 2017-07-28
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    相关资源
    最近更新 更多