重拋例外有很多種方式, 包含 throw
, throw ex
, 使用 inner exception 以及 System.Runtime.ExceptionServices.ExceptionDispatchInfo
, 或是不要重拋例外.
先總結選擇如下順序:
- 最好不要重拋例外
- 重拋優先選
System.Runtime.ExceptionServices.ExceptionDispatchInfo
- 沒有框架支援則用 Inner Exception
throw
應該沒什麼情境需要用到了throw ex
是具破壞性的作法, 除非是要刻意破壞堆疊追蹤
這篇會整理這幾種方法的使用與優缺, 並且另外提到 throw
和 throw ex
兩種方法對於堆疊追蹤的負面影響.