2012-12-21 259 views
1

如何處理urlfetch錯誤?我正在嘗試muteHttpExceptions: true,但它不起作用,腳本中斷。UrlFetchApp muteHttpException不起作用

`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和catch方法的句柄。謝謝。

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

    } 

}

回答

1

這似乎是按設計工作。 muteHttpExeptions是爲了做到這一點。它告訴腳本如果收到HTTP錯誤狀態,將繼續正常運行。在您的第一個示例代碼中,錯誤不是HTTP錯誤。沒有Web服務器返回任何類型的HTTP代碼。該URL不存在。到達互聯網的服務無法繼續,並且沒有HTTP例外。

當我訪問http://www.soccer-wallpapers.net/soccer_wallpaper/barcelona_fc_barcelona_360.jpg,我得到一個超時消息。沒有任何迴應我的要求。似乎soccer-wallpapers.net不再對請求做出迴應。它有一個DNS條目,但不響應來自我的位置的ping。

如果你必須處理不良網址,可能關閉服務器和其他服務器的錯誤,那麼你就需要使用try{}catch(){}塊。你如何處理這些錯誤是你的責任。 muteHttpExceptions標誌意味着更多的是作爲應用程序的一部分處理HTTP錯誤,而不是在腳本級別拋出錯誤。

+0

喜fooby THX您的回覆細胞的功能,我處理錯誤時,頁面沃斯使用try重置連接{} catch(){} ...和處理另一個錯誤使用getResponseCode()這是很好的解決方案?對不起,如果iam missunderstood ... –

+0

處理網絡類型錯誤,如超時和頁面未找到等必須在try catch中處理。如404找不到,或503服務不可用等響應錯誤被捕獲,除非你有'muteHttpExceptions'設置爲true。在這種情況下,爲了處理錯誤,您必須閱讀消息的內容並自行決定。希望澄清事情 – fooby

0

這仍然是一個問題,在被稱爲在在try-catch在這種情況下,只是忽略