C 網路程式設計中的異常處理

2021-08-29 03:19:09 字數 2784 閱讀 9108

目錄 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

l摘要

l網路程式設計中異常出現場景

l網路程式設計中的異常處理

l小結

摘要

異常的處理是為了保證程式盡量在不可預知的意外情況正常執行,同時異常的處理也是比較繁瑣的過程。在網路程式設計中,不可預知的情況更多,使得開發者在程式設計時需要編寫大量的異常處理**,本文介紹了c#中一種簡單的異常處理方法,減少了開發者的麻煩。本文假設讀者對c#的網路程式設計和委託比較熟悉。

網路程式設計中異常出現的場景

在編寫程式的過程中,為了盡量讓程式具有更好的穩定性,減少不可預知因數對程式執行時的影響,我們都需要大量的使用try..catch.. 來處理可能出現的異常。在網路程式的編寫過程中,由於網路的不確定因素使得我們需要編寫更多的異常處理**。比如在乙個檔案傳輸的程式中,我們可能會出現如下的情形,

我們的程式結構可能會分為如下幾層:介面使用者操作層、中間的業務邏輯層、以及用來傳輸檔案的sockets操作層。相應得偽碼如下:

// sockets傳輸層

class filesocket

fin.flush();

fin.close();

return;}

}// 邏輯處理層

class logic

}// 介面層

class client

}

顯然在上面的**中我們可以發現,如果有異常發生,我們的程式就會直接崩潰。當然,我們可以通過處理異常的方法來達到讓程式不崩潰的目的,比如在我們的最後的socket傳輸層來通過try.catch來捕獲異常。但是,帶來的問題就是,作為呼叫該段**的程式,比如logic類中就必須知道異常已經發生。這樣的話,我們的filesocket中的transferfile方法就必須返回乙個值來表示是否發生異常,比如bool型別,或是int型別,同樣的作為logic的上一級呼叫者client也必須來判斷logic中是否有異常,同樣也需要來進行判斷。如果我們的層數更多,或者呼叫關係更加複雜的話,我們在**中,對於類似的處理就更加複雜以及麻煩。

如果我們需要在日誌檔案中記錄異常發生的原因和型別以便除錯的話,我們可以需要在上述的三個類中都必須進行相應的處理,這樣的話,邏輯也顯得比較混亂。

網路程式設計中的異常處理

在前面的場景中,我們已經非常清楚了在網路程式設計中異常的處理比較麻煩。如果呼叫關係比較複雜的話,我們對於**處理和**的控制就非常麻煩。同時在對異常的處理過程中,使用者很可能會需要寫入日誌檔案,寫入系統日誌,在介面上面顯示等等不同操作,那麼在不同的層次中捕捉異常了之後,基本很難實現使用者這樣的要求。

為了簡化對異常的處理過程,達到對異常統一處理的目的,我們採用僅對最終呼叫層的異常進行統一處理,同時提供乙個專門處理異常的類對捕獲的異常進行操作。比如在上面的例子中,我們僅在最後的client呼叫層來處理異常,對其它可能出現的異常不做捕獲。

那麼,如何讓使用者可以對捕獲的異常進行不同的操作呢?我們可以採用委託來解決這個問題,由使用者直接傳入需要處理的方法名稱,如顯示在介面的函式,寫入系統日誌的函式等等。

因此,我們可以這樣定義乙個專門處理異常的類來解決這些問題,**如下:

public

delegate void messageeventhander ();

public

class exceptionhandler

public exceptionhandler(messageeventhandler showmessage)

public

void writelog(exception ex)

eventlog.writeentry(log_source_name,ex.tostring());

} public

static

void publish(exception ex,messageeventhandler showmessage)

public

static

void publish(exception ex)

}這個上面是乙個簡單的實現,如果我們需要在處理異常時,完成其它的操作,那麼我們可以直接在exceptionhander類中加入相關的方法即可。

顯然,如果客戶段需要對捕獲的異常進行處理,那麼只要例項化乙個messageeventhander的物件,傳入相關的方法即可達到目的。

小結

通過上面的例子中,我們實現了乙個簡單的統一異常處理的類,來達到簡化異常處理的目的,使用者也可以根據自己的實際需要對該類進行擴充套件,使對異常的處理更加方便。

C 網路程式設計中的異常處理

目錄 l摘要 l 網路程式設計中異常出現場景 l 網路程式設計中的異常處理 l 小結 摘要 異常的處理是為了保證程式盡量在不可預知的意外情況正常執行,同時異常的處理也是比較繁瑣的過程。在網路程式設計中,不可預知的情況更多,使得開發者在程式設計時需要編寫大量的異常處理 本文介紹了 c 中一種簡單的異常...

網路中異常的處理

1,故障判斷流程 常見問題處理 常見問題處理 協議是否正確 ppp x25 fr 工作方式是否正確 dce dte x25 fr 鏈路層幀格式是否正確?x25 fr ethernet 鏈路層位址對映是否正確?ip位址是否正 確?ddr x25 fr 2,兩台路由器通過ddn互連,兩端分別封裝 ppp...

網路程式設計的異常及處理

網路程式設計不只是編寫網路 主機 程序都正常時能良好工作的程序,更重要的是客戶主機崩潰 客戶程序崩潰網路異常時怎麼處理。accept被訊號中斷 accept以及套接字上的i o可能被訊號打斷,並返回eintr作為結果,必須處理該返回值並且適當時候再次呼叫。for else connect被訊號中斷 ...