【问题标题】:Google apps script cannot catch exception on "ERR_INTERNET_DISCONNECTED"Google 应用程序脚本无法捕获“ERR_INTERNET_DISCONNECTED”上的异常
【发布时间】:2015-12-27 04:36:22
【问题描述】:

我有一个服务器端和客户端 GAS 应用程序。客户端需要在服务器上运行一个函数。如果出于任何原因(例如没有互联网连接),连接不成功,我希望它能够优雅地提醒用户。我试过这个,但它不起作用:

try{
     google.script.run
       .withSuccessHandler(onSuccess)
       .myFunction();
     return;
   }
 catch(e){
   alert('Cannot connect to server: ' + e.message());
 }

使用 Chrome 46,控制台正确地吐出错误:“net::ERR_INTERNET_DISCONNECTED”。但是,警报不会出现。控制台还显示:“Uncaught NetworkError: Connection failure due to HTTP 0”。

为什么我无法捕捉到异常?

编辑:正如这里所解释的 (https://softwareengineering.stackexchange.com/questions/144326/try-catch-in-javascript-isnt-it-a-good-practice),也许它与调用的异步性质有关。有人可以确认吗?

【问题讨论】:

  • 您是否尝试过使用“withFailureHandler”功能? developers.google.com/apps-script/guides/html/…
  • 是的,但在这里无关紧要。当调用的原始函数抛出异常时,withFailureHandler (f) 将控制权移交给“f”。在这里,原始函数永远不会被调用,因为在发出请求之前 Internet 已断开连接。这就是我想要检测的条件。

标签: javascript google-apps-script exception-handling connection


【解决方案1】:

我想确认电子表格容器绑定项目中的 Apps 脚本函数是否可以通过 google.script.run 从 HTMLService 加载的 HTML 模板中的 JavaScript 函数调用。我最初的发现表明“不是”(见下文),但我可能遗漏了一些东西。

从 onclick 处理程序调用的 JS 函数中调用 google.script.run 时,会始终路由到错误处理程序函数,并带有以下错误代码:NetworkError: Connection failure due to HTTP 0。

如果我直接从按钮的 onclick 处理程序调用 google.script.run 代码,它会运行。我希望能够在函数中使用它,这样我就可以构建一组数据以传递给我计划实现的真实方法。

您看到的错误是因为您使用该行关闭了侧边栏,从而切断了与服务器端脚本的连接。

【讨论】:

  • 这与任何侧边栏无关。我的项目中没有侧边栏。客户端使用 htmlservice 作为 webapp 提供服务。也没有电子表格容器。
猜你喜欢
  • 1970-01-01
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 2022-12-02
相关资源
最近更新 更多