タイム ゾーン情報が無効である場合にスローされる例外。 いくつかの発生パターンがあるようだが、今回はそのうちの2つを確認。[実験ソース(C#)]using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { // 10月…
プログラムに無効な MSIL (Microsoft intermediate language) またはメタデータが含まれている場合にスローされる例外。通常、これはプログラムを生成したコンパイラのバグ、とのこと。 非常に興味をそそられたので調査してみたが、断念。KB312544の情報を元…
オブジェクトの現在の状態に対して無効なメソッド呼び出しが行われた場合にスローされる例外。[実験ソース(C#)]using System; using System.Collections.Generic; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { List<int> </int>…
無効なキャストまたは明示的な型変換に対してスローされる例外。[実験ソース(C#)]using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //Char から Boolean、Single、Double、Decimal、または DateTime への…
使用可能なメモリが十分に残っているかどうかのチェックで、要件が満たされなかった場合にスローされます。[実験ソース(C#)]using System; using System.Runtime; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Memor…
入れ子になったメソッド呼び出しが多くなりすぎ、実行スタックがオーバーフローした場合にスローされる例外。[実験ソース(C#)]using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine(f(decim…
配列の境界外のインデックスを使用して配列の要素にアクセスしようとした場合にスローされる例外。[実験ソース(C#)]using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int[] a = new int[3]; for (int i = …
引数の書式が、呼び出されたメソッドのパラメーターの仕様に一致していない場合にスローされる例外。[実験ソース(C#)]using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { DateTime dt = DateTime.Parse("12/…
同期オブジェクトの配列に 1 つのオブジェクトが 2 回以上現れた場合にスローされる例外。[実験ソース(C#)] using System; using System.Threading; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { AutoResetEvent e =…
開始メソッドが指定されていないことが原因でクラスの読み込みに失敗した場合にスローされる例外。[実験ソース(C#)] using System; using System.Runtime.InteropServices; namespace ConsoleApplication1 { class Program { [DllImport(@"..\..\..\ClassLib…
DLL インポートで指定した DLL が見つからない場合にスローされる例外。[実験ソース(C#)] using System; using System.Runtime.InteropServices; namespace ConsoleApplication1 { class Program { [DllImport("win32.dll", CharSet = CharSet.Unicode)] pub…
アプリケーション ドメインをアンロードしようとして失敗した場合にスローされる例外。 二重に Unload しようとした場合も発生するようだが、そちらは単純なので置いておく。 今回は、子プログラムが終了に「もたつく」ケースを実験。[実験ソース(C#)] まず…
ダイナミック リンク ライブラリ (DLL) または実行可能プログラムのファイル イメージが無効である場合にスローされる例外。 今回は、.NET Framework 4.0 で作成したDLLを、.NET Framework 2.0 のプログラムでLoadしようとした時に発生する例外を検証。[実験…
ダイナミック リンク ライブラリ (DLL) または実行可能プログラムのファイル イメージが無効である場合にスローされる例外。 今回は、x64 用に作成したDLLを x86 プログラムで呼び出した場合の例外を実験。[実験ソース(C#) DLL側] using System; namespace C…
ダイナミック リンク ライブラリ (DLL) または実行可能プログラムのファイル イメージが無効である場合にスローされる例外。 今回は、Windows システム DLLを、.NET Framework アセンブリであるかのように読み込もうとした場合におきる例外を実験。[実験ソー…
間違った型の要素を配列に格納しようとするとスローされる例外。[実験ソース(C#)] using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string[] a = { "1", "2" }; object[] b = (object[])a; b[1] = 3; } }…
算術演算、キャスト演算、または変換演算におけるエラーが原因でスローされる例外。 ただし、DivideByZeroException、NotFiniteNumberException、および OverflowException の基本クラスなので、より詳細なエラーはそちらになる。[実験ソース(C#)]using Syst…
OverflowException がらみで、もう1つ例。[実験ソース(C#)] using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine(AddOne(int.MaxValue)); } static int AddOne(int a) { return a + 1; } }…
算術演算、キャスト演算、または変換演算の結果オーバーフローが発生した場合にスローされる例外。[実験ソース(C#)] using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { decimal a = 12345678901; Console.W…
整数値または小数値を 0 で除算しようとするとスローされる例外。[実験ソース(C#)] using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { double a = 0; Console.WriteLine(10.0 / a); // +∞ int b = 0; Conso…
引数が不正な場合に発生する例外。 ただし、派生クラスの ArgumentNullException や ArgumentOutOfRangeException が極力使われるらしい。逆に言うと、例外の原因はわかりにくい、ということか。[実験ソース(C#)]using System; using System.Collections; na…
引数が許容される範囲を超えている、という例外。 まずは、文字列操作で起きる例。 [実験ソース(C#)] using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string a = "test "; foreach (string w in a.Split…
nullにしてはいけない引数に null参照を指定した場合の例外。 [実験ソース(C#)] using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { ConvertSample(); } static void ConvertSample() { string s = null; Co…
アプリケーションの実行中に発生する 1 つ以上のエラーを表すときに使用する。 今回は、以下の目的で使用してみる。 ・PLINQの例外処理 [実験ソース(C#)] using System; using System.Linq; namespace ConsoleApplication1 { class Program { static void Ma…
AggregateException の Flatten メソッドの使い方を考えてみる。 その1 では、複数のタスクで発生した例外を1カ所でハンドリングしてみたが、以下のようなケースでは、例外が入れ子(ネスト)状になってしまい、ハンドリングが面倒になる。 InnerExceptions を…
アプリケーションの実行中に発生する 1 つ以上のエラーを表すときに使用する。 今回は、以下の目的で使用してみる。 ・複数のタスクで発生した複数のエラーを1カ所でハンドリングする。それ以外では、以下の使用方法がある。(後日記載予定) ・PLINQの例外処…
致命的ではないアプリケーション エラーが発生した場合にスローされる例外。 [実験ソース(C#)] using System; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { try { Sub(); } catch (ApplicationException ae) { Conso…
アンロードされたアプリケーション ドメインにアクセスしようとするとスローされる例外。 [実験ソース(C#)] using System; using System.Security.Policy; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { AppDomain do…
保護されたメモリの読み取りまたは書き込みが試行されたときにスローされる例外。 [実験ソース(C#)] using System; using System.Runtime.InteropServices; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { IntPtr a = …