iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 21
0
自我挑戰組

Framework 設計原則系列 第 21

Exception(2) - throw exception

  • 分享至 

  • xImage
  •  

在使用別人的framework時

因為執行的過程中發生一些意外,framework無法判斷皆下來要怎麼辦

只好丟出Exception,告訴使用者『檔案找不到,無法打開』

使用者接到這個訊息後了解目前狀況可以做進一步的處理

角色轉過來變成framework開發人員時

丟出Exception要有甚麼要注意的事情呢?

  1. 不要丟出error code

  2. 丟出的Exception要有所說明
    這兩點是說,丟出的Exception不能只是死板板的stack message這類的error code
    至少要包括兩個資訊:
    a. 目前發生的是甚麼錯誤?
    b. 如何排除錯誤的方法
    http://ithelp.ithome.com.tw/upload/images/20161222/20091485xClZG2dzCP.png

  3. 發生有危險性的錯誤時,呼叫System.Enviroment.FailFast

System.Enviroment.FailFast 待確認,不確定是啥

  1. 不要把Exception加入正常流程之中

這個錯誤我也有犯過
有些東西是可以透過檢查來避免錯誤的,就加入判斷吧!不要隨便丟出Exception

if(!collection.IsReadOnly){
    collection.Add(additionlNumber);
}
  1. 丟出Exception時要考慮效能問題

  2. 為Exception提供文件

  3. 不要加入參數決定要不要丟出Exception

// 不好的設計
public Type GetType(string name, bool throwOnError){...}
  1. 不要把Exception當成回傳的物件,也不要當成out parameter
// 不好的設計
public Exception DoSomething(){...}

public voit DoSomething(out Exception e){...}

上一篇
Exception之我的前世今生例外之路
下一篇
Exception(3) - 如何使用原生的Exception
系列文
Framework 設計原則30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言