役に立ちましたか?

解決

メソッドの仮引数が無効であるとき、

FormatExceptionは必ずしもスローされません。この方法は、外部リソースを消費している場合にも発生する可能性がありますし、外部リソースからのデータのフォーマットが不適切です。

たとえば、 BinaryReader.Read7BitEncodedInt にスローされます。ストリームから読み取るために何が起こっているのであればFormatExceptionは、有効な7ビットの符号化整数ではありません。これは、すべての引数を取りません。メソッドの仮パラメータが無効であるとして、引数が渡されたときArgumentExceptionは、他の一方で、唯一のスローを取得する必要があります。

あなたはMSDNの記事から参照説明がFormatExceptionが本当にあると明確にすべきよりも制限されます。

他のヒント

このビット薄汚いです:しかし、リヒター中の CLR経由のC#の(ページ432)は、Exceptionクラス階層は、.NETに非常によく実装されていなかったので、多分それはだことを示唆します:

  

は、MicrosoftのオリジナルのアイデアはSystem.Exceptionは、すべての例外の基底型であろうとし、他の二つの種類、System.SystemExceptionSystem.ApplicationExceptionがすぐException由来の2種類のみだろうということでした。さらに、CLRによってスローされた例外はSystemExceptionから派生されるだろう、とすべてのアプリケーション-スローされた例外がApplicationExceptionから派生されるだろう。この方法で、開発者はすべてのアプリケーション-スローされた例外をキャッチするcatchブロックを書くことができます。

     しかし、...このルールは非常によく従っていませんでした。いくつかの例外は、それがすべての大きな混乱で、結果はExceptionIsolatedStorageExceptionタイプが全く特別な意味を持っていないということですので、いくつかのCLRスローされた例外は...フォームApplicationExceptionを得ている、SystemExceptionApplicationException)由来の即時です。この時点で、Microsoftは例外クラス階層からそれらを削除したいと思いますが、彼らはそれはすでに、これらのタイプを参照するすべてのコードを壊すことができないので。

これはまさにあなたのクエリへの答えではありませんが、私はそれはいくつかの例外誘導体が彼らのやり方を継承する正当な理由が本当に存在していないことを示していると思うので、それが関連していると思います。残念ながら、Exceptionクラスの継承は、よく考え抜かれていなかったすべてのことと、それが混乱のようなものです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top