5

urlfetch エラーを処理するには? しようとmuteHttpExceptions: trueしていますが、うまくいかず、スクリプトが壊れます。

function myFunction() {
  var result = UrlFetchApp.fetch("http://www.soccer-wallpapers.net/soccer_wallpaper/barcelona_fc_barcelona_360.jpg ", {
muteHttpExceptions: true });
  Logger.log("code: " + result.getResponseCode());
  Logger.log("text: " + result.getContentText());
}

しかし、別のエラー URL を試して正常に動作するようにしています。

http://img8.uploadhouse.com/fileuploads/2058/20586362b34151eb10a4001e1c44305fe41bff6.jpg

try and catch メソッドを使用してハンドルを解決しました。

  try
  {
    var page = UrlFetchApp.fetch("http://www.soccer-wallpapers.net/soccer_wallpaper/barcelona_fc_barcelona_360.jpg");
  }
  catch(err)
  {
    Browser.msgBox("error");
  }
}
4

2 に答える 2

4

これは設計どおりに機能しているようです。muteHttpExeptionsはまさにそれを行うためのものです。HTTP エラーステータスを受け取った場合、通常どおり続行するようにスクリプトに指示します。最初のコード例では、エラーは HTTP エラーではありません。どのような種類の HTTP コードも返す Web サーバーはありません。URL が存在しません。インターネットに接続するサービスは続行できず、HTTP 例外は発生しません。

http://www.soccer-wallpapers.net/soccer_wallpaper/barcelona_fc_barcelona_360.jpgにアクセスすると、タイムアウト メッセージが表示されます。私の要求に応えるものは何もありませんでした。Soccer-wallpapers.net はリクエストに応答していないようです。DNS エントリはありますが、自分の場所からの ping に応答しません。

不正な URL、サーバーのダウンの可能性、その他のサーバー エラーを処理する必要がある場合は、try{}catch(){}ブロックを使用する必要があります。これらのエラーをどのように処理するかはあなた次第です。このmuteHttpExceptionsフラグは、スクリプト レベルでエラーをスローするのではなく、アプリケーションの一部として HTTP エラーを処理するためのものです。

于 2012-12-21T13:29:45.783 に答える
1

これは、この場合の try-catch が単に無視されるセルで呼び出される関数の問題のままです。

于 2013-11-12T18:27:02.267 に答える