2010-04-24 179 views
1

使用imageio.imageio.read iget a無法創建ImageInputStream。我有一個捕捉異常,所以程序仍然存在,但我想知道是否有一種方法來放置if語句來檢查它是否發生錯誤,然後嘗試再次讀取它。 基本上問是否有例外測試?Imageiio無法創建圖像輸入流

+0

'try..catch'有什麼問題? – doublep 2010-04-24 20:37:33

+0

我該如何測試它是否遇到異常?並且如果它已經回滾了,試圖再次讀取文件並捕獲它? – pie154 2010-04-24 20:39:38

+1

只需在'catch'塊中設置一些'boolean'變量(例如'failed')爲'true'即可。如果該變量爲「真」,稍後重試。雖然到那時除非會有一些變化(在圖像文件中,大概是),重試會給出同樣的錯誤。 – doublep 2010-04-24 20:44:12

回答

1

try ... catch異常測試。因爲它是不太可能的問題

boolean success = false; 
do { 
    try { 
     // do imageIO stuff 
     success = true;  // this statement only reached if no exception 
    } catch (Exception e) { 
     System.err.println(e); 
    } 
} while (!success); 

由於doublep提示,這是一個非常無謂的實現:如果你真的想要把你的異常作爲閉環控制機制,你可以用它像這樣遠離循環的一個迭代到下一個循環,所以你的程序可能會無休止地循環打印錯誤消息。

+0

這正是我感謝之後的事情。這是從連接的單反相機讀取正在保存的相機圖像,問題是我在整個圖像被寫入之前試圖讀取它,所以讀取之間的延遲應該允許整個圖像在寫入之前被寫入的時間試圖再次閱讀。 – pie154 2010-04-24 20:52:29

+0

好的。我擔心你可能會這樣做:)更仔細的實現可能會定期檢查文件大小並推遲加載圖像,直到大小穩定。崩潰通過你的錯誤的方法有點暴躁,但如果它適合你,沒有必要使它更復雜:) – 2010-04-24 21:14:23