即使使用 Try Catch (e),脚本也不会忽略错误 -> Uncaught (in promise) SyntaxError: Unexpected end of Json Imput [

Posted

技术标签:

【中文标题】即使使用 Try Catch (e),脚本也不会忽略错误 -> Uncaught (in promise) SyntaxError: Unexpected end of Json Imput [重复]【英文标题】:Even with Try Catch (e) the script does not ignore the error -> Uncaught (in promise) SyntaxError: Unexpected end of Json Imput [duplicate]即使使用 Try Catch (e),脚本也不会忽略错误 -> Uncaught (in promise) SyntaxError: Unexpected end of Json Imput [重复] 【发布时间】:2021-10-05 08:21:01 【问题描述】:

发生的情况是,在我的终端中,我有一个 Python 实时更新 JSON 文件,导致文件打开有时更新数据,禁止 javascript 访问,导致错误。

所以在这种情况下,我希望当 JavaScript 无法访问文件时,它不会传递错误,而是不做任何事情,以继续显示在错误之前收集的值。

但正如我们在代码中看到的那样,我使用的是trycatch(e),即便如此错误仍然出现


function refresh_images() 
    try 
        let selectedstages = document.getElementById("matches").selectedOptions[0].getAttribute("data-stages");
        let selectedevents = document.getElementById("matches").selectedOptions[0].getAttribute("data-events");

        fetch("testedropdown.json")
            .then(response => response.json())
            .then(data => 
                console.log(data.Stages[selectedstages].Events[selectedevents].Eps)
            )
     catch (e) 
    


【问题讨论】:

你不能try/catch承诺除非你await它。 另外,错误是因为您收到了一些格式错误的 JSON。最好能解决这个问题。 嗨@jonrsharpe 老实说我不明白,你能否更详细地告诉我为什么在这种情况下它不起作用并指出一些可供我用来解决问题的选项?提前致谢!我研究了 Javascript 中的 iferror 选项,所有迹象都是使用 try catch! "...您能否更详细地告诉我为什么在这种情况下它不起作用..." - 因为您不是awaiting承诺,在async 函数中 - “...并指出一些选项让我用来解决问题?” - await 吗? .catch它,如果函数不能是async 你好@VLAZ,问题是在我的知识水平上,我无法解决这个问题,所以Python最终需要打开文件进行更新,使其无法访问。所以现在我需要找到一种方法来隐藏 Javascript 错误。 【参考方案1】:

fetch 执行异步操作,try/catch 只能捕获在其相应块内首次运行代码时产生的错误(您的错误在您的第一个 .then() 回调中抛出)。您可以添加 try/catch 包装 response.json(),它会按您的预期工作。

或者,您可以使用 Promise catch 方法安全地重新格式化您的代码,如下所示:

function refresh_images() 
    const selectedstages = document.getElementById("matches").selectedOptions[0].getAttribute("data-stages");
    const selectedevents = document.getElementById("matches").selectedOptions[0].getAttribute("data-events");

    fetch("testedropdown.json")
        .then(response => response.json())
        .then(data => 
            console.log(data.Stages[selectedstages].Events[selectedevents].Eps);
        )
        .catch((err) => 
            console.log(err);
            // HANDLE ERRORS HERE.
        );

更多信息here。

【讨论】:

以上是关于即使使用 Try Catch (e),脚本也不会忽略错误 -> Uncaught (in promise) SyntaxError: Unexpected end of Json Imput [的主要内容,如果未能解决你的问题,请参考以下文章

PHP try/catch 和致命错误

在aardio的函数里try...catch语句中使用return。

即使存在 try/catch 块,应用程序也会在空对象引用上出现“布尔 android.content.Intent.migrateExtraStreamToClipData()”

即使代码在 try/catch 块中,我也会不断收到异常 [关闭]

即使代码在try / catch块中,我仍然会收到异常[关闭]

js 抛出异常try catch怎么写?在线等