在program.cs中新增如下**,之後整個應用程式都不需要額外處理異常了。所以的異常都會在這裡處理
補充:還需要考慮沒有檔案的寫許可權,catch (unauthorizedacces***ception ex)
access to the path 'd:\chucklu\git\edenred\lisa_5.0.0.0\lisa.controlpanel\lisa.controlpanel\bin\debug\log\20171206.0.log' is denied.
還需要考慮檔案被其他程序占用 ,catch (ioexception ex)
the process cannot access the file 'd:\chucklu\git\edenred\lisa_5.0.0.0\lisa.controlpanel\lisa.controlpanel\bin\debug\log\20171206.0.log' because it is being used by another process.
usingsystem;
using
system.collections.generic;
using
system.linq;
using
system.windows.forms;
using
winclient.ui;
using
zbm.zitaker.log;
using
zbm.utility;
namespace
winclient
catch
(exception ex)
}//////
處理ui執行緒的異常
/// ///
///static
sender, system.threading.threadexceptioneventargs e)
static
void
dealexception(exception ex)}}
}
需要注意的是 還有另外乙個處理異常的事件(然並卵)
這就要求,子執行緒需要自行捕獲異常,然後將異常丟擲到ui執行緒
this.begininvoke((action)delegate
);通過以下方式,將非ui執行緒的執行緒丟擲到ui執行緒來處理。
privatevoid
createthread()
private
void
temp()
catch
(exception ex));}
}
以上處理方法的不足之處在於,所以的異常都會以messagebox的方式顯示給使用者
但是,如果有的執行緒是需要一直在後台執行的,那麼多捕獲到異常後。顯示messagebox的時候,貌似會把ui卡死。
***************2023年09月07日更新********************
子執行緒的執行緒還是需要通過事件通知的方式來處理,因為並不是所有的類都有begininvoke的方法
class childthreadexceptionoccuredeventargs : eventargs
classeventnotifymanager
private
static
readonly eventnotifymanager instance = new
eventnotifymanager();
public
static
eventnotifymanager instance
}//////
子執行緒出現異常 子執行緒的異常無法丟擲到主線程,所以需要使用事件通知機制
/// public
event eventhandlerchildthreadexceptionoccured;
public
void
onchildthreadexceptionoccured(childthreadexceptionoccuredeventargs e)
}}
可以在main函式中,增加註冊此事件,然後在啟用子執行緒的時候,在子執行緒的處理方法中,try catch,捕獲到異常之後,就用這個事件把異常丟擲到主線程中
c 中的異常處理
異常的概念 程式在執行過程中可能產生異常 異常 exception 與bug的區別 異常是程式執行時可預料的執行分支 bug是程式中的錯誤,是不被預期的執行方式 異常 exception 和bug的對比 異常執行時產生除0的情況 需要開啟的外部檔案不存在 陣列訪問時越界 bug使用野指標 堆陣列使用...
C 中的異常處理介紹
c 中的異常是指在程式執行時,發生的特殊情況,例如除數為0的情況。異常機制提供了一種轉移程式控制權的方式。c 中的異常處理涉及到三個關鍵字 try catch throw。關於這三個關鍵字的詳細描述如下 我們可以使用 throw 關鍵字在 中丟擲異常。throw 關鍵字操作物件的型別即為丟擲異常的型...
的異常處理 C 異常處理總結
做開發不僅僅要考慮到業務邏輯更要在寫 時將各種可能考慮周全,但是這又是很難的事情,畢竟開發就是個人的事,而使用者可能上萬甚至百萬級別。這時,程式的穩定性就極為重要,我們不能讓程式因為某一處執行出問題而就直接導致程式或者產生其他更嚴重的後果,比如 做除法時當除數為零時,陣列訪問越界時,容器capaci...