2012年8月9日木曜日

開発環境

『初めてのC# 第2版』(Jesse Liberty+Brian MacDonald著、日向俊二訳、オライリー・ジャパン、2006年、ISBN978-487311-294-7)の 第16章(例外)16.12(練習問題)、練習16-2.解いてみる。

練習16-2.

コード

using System;
using System.Collections.Generic;

namespace Sample
{
    class Cat
    {
        private int age;
        public Cat(int age)
        {
            this.age = age;
        }
        public int Age
        {
            get { return age; }
            set { age = value; }
        }
    }
    class CustomCatError : Exception
    {
        public CustomCatError(string msg) :
            base(msg) { }
    }
    class Tester
    {
        public void CatManager(Cat cat)
        {
            if (cat.Age <= 0)
            {
                throw new CustomCatError("エラー: 猫の年齢が0以下");
            }
            Console.WriteLine(cat.Age);
        }
        public void Run()
        {
            try
            {
                Console.WriteLine("Catオブジェクトの割り当て開始");
                Cat tama = new Cat(5);
                Cat sora = new Cat(-5);
                List<Cat> cats = new List<Cat>();
                cats.Add(tama);
                cats.Add(sora);
                Console.WriteLine("猫の年齢一覧");
                foreach (Cat cat in cats)
                {
                    CatManager(cat);
                }
                Console.WriteLine("Catオブジェクトの割り当て終了");
            }
            catch (ArgumentOutOfRangeException e)
            {
                Console.WriteLine(e.Message);
            }
            catch (CustomCatError e)
            {
                Console.WriteLine(e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                Console.WriteLine("Catオブジェクトの割り当ての解除");
            }
        }
        static void Main()
        {
            Tester t = new Tester();
            t.Run();
        }
    }
}

入出力結果(Console Window)

Catオブジェクトの割り当て開始
猫の年齢一覧
5
エラー: 猫の年齢が0以下
Catオブジェクトの割り当ての解除
続行するには何かキーを押してください . . .

0 コメント:

コメントを投稿