.Net 例外処理に悩む

みなさんは例外処理ってどう設計していますか?

僕は悩んで悩んで答えがでません。

例外の種類は①致命的なエラー②業務上のエラーがあると思いますが

この②に悩んでいます。

Exceptionを継承(ApplicationExceptionは非推奨のようです)するのか、

プロパティを用意し、コードや内容を設定するのか、または別の手段があるのか...

プロパティに設定する場合ってMVP(Model View Presenter)などの構造の場合、

各階層にエラー情報を渡していくのかな?それは何だか違う気がする。

業務エラーはプロパティで処理する方法が推奨されいるような記事も見かけました。

もう悩むばかりで答えが出ません...誰か助けて(T T)