1

我正在开发一个应用程序,我想在处理程序函数中使用 try catch 块,但它给出错误“遇到错误:发生意外错误”。代码似乎是正确的,但它不起作用。app.getElementById('elementId')只有在try块的情况下才会发生错误

这是我的代码。

function doGet(e) {
  var app = UiApp.createApplication();
  var hPanel = app.createHorizontalPanel();
  app.add(hPanel);
  var handler = app.createServerHandler('handleOpenClose_');
  var btn1 = app.createButton('Open Item').setId('openBtn').addClickHandler(handler);
  var btn2 = app.createButton('Close Item').setId('closeBtn').addClickHandler(handler);
  hPanel.add(btn1).add(btn2);
  return app;
}

function handleOpenClose_(e){
  var source = e.parameter.source;
  var app = UiApp.getActiveApplication();
  var itemPanel;
  try{//check if itempanel exists
    var itemPanel = app.getElementById('itemPanel');
  }
  catch(e){// if it does not exists, create it
    var itemPanel = app.createVerticalPanel().setId('itemPanel');
    app.add(itemPanel);
    for(var i=0; i<10; i++){
      itemPanel.add(app.createLabel('Item '+i));
    }
  }

  if(source == 'openBtn'){itemPanel.setVisible(true)}
  else if(source == 'closeBtn'){itemPanel.setVisible(false)}

  return app;
}

我知道还有其他方法可以实现相同的目标,但我想与 google-apps-script 社区分享这一观察结果。让我知道我的观察是否正确。如果它是一个错误,我想将它发布在问题跟踪器中。

4

1 回答 1

1

很久以前,该问题已作为Issue 592报告给 Google 。不幸的是,当具有给定 id 的项目不存在时,GAS 会显示一个意外错误警报框,而不是向代码抛出异常。

于 2012-11-07T08:30:57.513 回答