2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ApplicationExceptionとは

Posted at

初めに

上司「Qiita(社内で)公開しませんか?」

ApplicationExceptionとは

しません。

勉強会で__ApplicationException__なるものを知りました。
Exceptionクラスの派生クラスですが、参考書もMSDNも「非推奨」としています。以下公式より。

System.ApplicationException をスローしたり、System.ApplicationException から派生したりしないでください。

何故非推奨?

結論から言うと、__MicrosoftがExceptionのルールを破ったから__らしいです。

その昔

  • 共通言語ランタイム(CLR)がスローする例外→SystemExceptionクラスから派生
  • アプリケーションがスローする例外→ApplicationExceptionクラスから派生

というルールをMicrosoftが推奨していました。
しかし、ある日Microsoftの開発者がそのルールを守らず、CLRがスローするのにApplicationExceptionから派生させてたり、その逆、アプリケーションがスローするのにSystemExceptionから派生させてたりしてしまったとかなんとか...。

当然設計者も使用者も混乱するので、ある日を境に
「全ての例外はExceptionから派生させよう」
とルールを一新し、混乱の元であるSystemApplicationの使用を非推奨としているわけです。

最後に

天下のMicrosoft社の人でも間違えるんですね...。非推奨の理由を知って少し驚いたので、まとめさせていただきました。
もし説明に間違いや御幣がある場合は、教えていただければ幸いです。では。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?