2012-10-01 43 views
1

假設http方案(即new URL (「http://www.google.com/」)),IOException不會被投擲在myHttpURLConnection.connect()而不是myHttpURLConnection = myURL.openConection()上。爲什麼URL.openConection()會引發IOException。

我的意思是instanceURL.openConection()似乎並不立即打開連接,如果是的話怎麼會有IOException

謝謝您提前。

+0

我正在拍在黑暗中說它可能與使用文件有關:// – endy

+2

我猜測這是一個API設計決策,允許連接處理程序在嘗試解析連接器時引發異常。我建議這是爲了讓連接解析器有機會在構造並返回一個新的連接器之前執行某種級別的驗證(如果需要)...恕我直言 – MadProgrammer

+0

這可能是因爲,URL的構造函數實際上會引發MalformedURLException,這是一種IOException。 – Jimmy

回答

1

當您撥打openConnection時,將會準備指定URL的連接。如果openConnection由於給定的URL無效而無法準備連接,則會引發IOException

欲知詳情,請參閱URL API

+0

那麼準備的意思是什麼,以及無效的URL是什麼意思。構建URL對象時出現格式不正常的情況,並且對資源的訪問看起來好像發生在.connect()調用上。 – jamesldurham

0

IOException披着許多例外,對於如MalformedException就是其中之一 如果與URI格式不正確連接斷開(例如給予不正確的協議原樣abc://1.1.1.1:1111)將拋出MalformedException包裹下IOException

相關問題