プログラミング(Python、Perl、C、Go、JavaScript)、数学、読書…
開発環境
"初めてのC# 第2版"の第16章(例外)の16.12(練習問題)を解いてみる。
練習 16-1
using System; using System.Collections.Generic; public class Cat { private int age; public Cat(int age) { this.age = age; } public int Age { get { return age; } set { age = value; } } } public class Tester { public void Run() { try { Console.WriteLine("Catオブジェクトの割り当て"); Cat tama = new Cat(10); Cat sora = new Cat(20); List cats = new List(); cats.Add(tama); cats.Add(sora); // あえて例外を発生させる(ArgumentOutOfRangeException) Console.WriteLine(cats[2]); Console.WriteLine("この行は出力される可能性も、出力されない可能性もある"); } catch (ArgumentOutOfRangeException e) { Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine(e.Message); } finally { Console.WriteLine("Catオブジェクトの割り当ての解除"); } } static void Main() { Console.WriteLine("Mainに入りました..."); Tester t = new Tester(); t.Run(); Console.WriteLine("Mainを出ます..."); } }
出力結果
Mainに入りました... Catオブジェクトの割り当て インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さく なければなりません。 パラメーター名: index Catオブジェクトの割り当ての解除 Mainを出ます... 続行するには何かキーを押してください . . .
練習 16-2
using System; using System.Collections.Generic; public class Cat { private int age; public Cat(int age) { this.age = age; } public int Age { get { return age; } set { age = value; } } } public class CustomCatError : Exception { public CustomCatError(string message) : base(message) { } } public class Tester { public void CheckAge(Cat cat) { if (cat.Age <= 0) { CustomCatError e = new CustomCatError("猫の年齢が0歳以下に!"); throw e; } } public int CatManager(Cat cat) { CheckAge(cat); return cat.Age; } public void Run() { try { Console.WriteLine("Catオブジェクトの割り当て"); Cat tama = new Cat(10); Cat sora = new Cat(-10); Console.WriteLine("Name: Tama Age:{0}", CatManager(tama)); Console.WriteLine("Name: Sora Age:{0}", CatManager(sora)); CatManager(sora); Console.WriteLine("この行は出力される可能性も、出力されない可能性もある"); } catch (CustomCatError e) { Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine(e.Message); } finally { Console.WriteLine("Catオブジェクトの割り当ての解除"); } } static void Main() { Console.WriteLine("Mainに入りました..."); Tester t = new Tester(); t.Run(); Console.WriteLine("Mainを出ます..."); } }
Mainに入りました... Catオブジェクトの割り当て Cat 猫の年齢が0歳以下に! Catオブジェクトの割り当ての解除 Mainを出ます... 続行するには何かキーを押してください . . .
0 コメント:
コメントを投稿