プログラミング(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; } } } class Tester { public void CatManager(Cat cat) { Console.WriteLine("Age: {0}", cat.Age); } public void Run() { try { Console.WriteLine("ここでオブジェクトを割り当てる"); List cats = new List(); Cat tama = new Cat(1); Cat sora = new Cat(2); cats.Add(tama); cats.Add(sora); CatManager(cats[3]); Console.WriteLine("この行は出力される可能性も、出力されない可能性もある"); } catch (ArgumentOutOfRangeException e) { Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine(e.Message); } finally { Console.WriteLine("ここでオブジェクトの割り当てを解除する"); } } static void Main() { Tester t = new Tester(); t.Run(); } }
出力結果
ここでオブジェクトを割り当てる インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さく なければなりません。 パラメーター名: index ここでオブジェクトの割り当てを解除する 続行するには何かキーを押してください . . .
練習 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 CustomException : System.Exception { public CustomException(string message) :base(message) { } } class Tester { public void CheckAge(Cat cat) { Console.WriteLine("年齢をチェック"); if (cat.Age <= 0) { CustomException e = new CustomException("年齢が0以下"); throw e; } Console.WriteLine("問題なし"); } public void CatManager(Cat cat) { Console.WriteLine("Age: {0}", cat.Age); CheckAge(cat); } public void Run() { try { Console.WriteLine("ここでオブジェクトを割り当てる"); List cats = new List(); Cat tama = new Cat(1); Cat sora = new Cat(-1); cats.Add(tama); cats.Add(sora); CheckAge(cats[0]); CheckAge(cats[1]); Console.WriteLine("この行は出力される可能性も、出力されない可能性もある"); } catch (ArgumentOutOfRangeException e) { Console.WriteLine(e.Message); } catch (CustomException e) { Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine(e.Message); } finally { Console.WriteLine("ここでオブジェクトの割り当てを解除する"); } } static void Main() { Tester t = new Tester(); t.Run(); } }
ここでオブジェクトを割り当てる 年齢をチェック 問題なし 年齢をチェック 年齢が0以下 ここでオブジェクトの割り当てを解除する 続行するには何かキーを押してください . . .
0 コメント:
コメントを投稿