我已經查看了與此問題相關的其他問題,但我沒有看到可幫助我的答案(或者更多地瞭解我的觀點)。Try - Catch Block的未處理異常
此代碼:
public static Bitmap GetLibraryObjectImage(Guid guid) {
try {
string tempPath = GetLibraryObjectImagePath(guid);
if (tempPath != string.Empty) {
var bytes = File.ReadAllBytes(tempPath);
var ms = new MemoryStream(bytes);
return (Bitmap)Image.FromStream(ms);
}
}
catch {
return (Bitmap)Image.FromFile(Application.StartupPath + @"\na.bmp");
}
return (Bitmap)Image.FromFile(Application.StartupPath + @"\na.bmp");
}
旨在應對該圖像文件找不到,或以其他方式無效的任何情況。我沒有確定任何具體的異常類型,希望它能捕捉到任何東西。
爲我的用戶之一扔這個異常:
無效參數。
在System.Drawing.Image.FromStream(流 流,布爾useEmbeddedColorManagement,布爾validateImageData) 在System.Drawing.Image.FromStream(流流)
在ScruffyDuck.AirportDesignEditor.Helpers.U.GetLibraryObjectImage(GUID GUID )
我在處理圖像的try-catch塊的其他情況下看過這個。我認爲上面的try-catch會得到一切,包括非託管異常,但也許我錯了。
我不知道引起異常的情況,但我真的不希望我的應用程序崩潰,即使我正在嘗試管理這些問題也會燒燬。它被我的全局異常處理程序捕獲,但當然有點晚了。
任何洞察避免這種
如何某些你這個用戶真的使用該版本的代碼* *?我會很驚訝地發現這種情況。 –
喬恩這是一個很好的觀點。我們最近發佈了一些小的更新。看他正在使用的版本我認爲我正在尋找正確的代碼。不過,我現在要回到存儲庫檢查 – ScruffyDuck
這就是爲什麼,如果軟件是內部的,我更喜歡爲甚至發佈配置生成PDB;它會給你線路號碼,如果它們不匹配最新的信號源,則表示一個過時的軟件版本。 – KeithS