它對我來說是一個悖論,我可以處理所有異常或讓它去尋找並解決它。這個樣本是否適合使用try catch?什麼是sugesstions?
我有一個windowservice,它有幾種方法是這樣的:
這是不好的樣本?
public void BeginOperation()
{
try
{
DoSync();
}
catch (Exception x){
Log(x.message)
Show(x.message);
}
}
public void DoSync()
{
try
{
GetSampleDatatable();
ApplyDiff();
CommitDiff();
}
catch (Exception x){
Log(x.message)
throw x;
}
}
數據層樣品
public DataTable GetSampleDatatable()
{
OracleDataTable myDataTable;
try
{
myDataTable = new OracleDataTable(sqlStr, this);
myDataTable.FetchAll = true;
myDataTable.Active = true;
}
catch (Exception x)
{
this.ErrorMessage = x.Message;
throw x;
}
return myDataTable;
}
這裏最大的問題是,你只需要用'catch Exception'捕獲所有異常。仔細想想哪些異常會發生,然後它會變得清晰在哪裏捕捉哪些(如果趕上它們) – Andrei
我明白,這個示例的最佳句柄例外是什麼,你可以很快告訴它 – Mennan
不要使用'拋出x;'弄亂你的堆棧跟蹤!只需使用'throw;'。這裏有一個重要的觀點:只有在可以處理它的時候纔會發現異常*。如果你不能處理這個問題,那麼不要在那裏處理它。讓它冒泡到可以的東西。 – mason