2014年6月22日日曜日

開発環境

Head First C#―頭とからだで覚えるC#の基本 (Andrew Stellman (著)、Jennifer Green (著)、佐藤 嘉一 (監修)、木下 哲也 (翻訳)、オライリージャパン)の8章(例外処理: 消化は時代遅れ)、プールパズル(p.359)を解いてみる。

プールパズル(p.359)

コード

Program1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication1
{
    static class Program
    {
        static void Main()
        {
            Kangaroo joey = new Kangaroo();
            int koala = joey.wombat(joey.wombat(joey.wombat(1)));

            try
            {
                Console.WriteLine((15 / koala) + " 個の卵");
            }
            catch (DivideByZeroException)
            {
                Console.WriteLine("こんにちは!");
            }
        }
    }
    class Kangaroo
    {
        FileStream fs;
        int croc;
        int dingo = 0;

        public int wombat(int wallaby)
        {
            dingo++;
            try
            {
                if (wallaby > 0)
                {
                    fs = File.OpenWrite("wobbiegong");
                    croc = 0;
                }
                else if (wallaby < 0)
                {
                    croc = 3;
                }
                else
                {
                    fs = File.OpenRead("wobbiegong");
                    croc = 1;
                }
            }
            catch(IOException)
            {
                croc = -3;
            }
            catch
            {
                croc = 4;
            }
            finally
            {
                if(dingo > 2)
                {
                    croc -= dingo;
                }
            }
            return croc;
        }
    }
}

出力

order.txt

型 'System.IO.IOException' の初回例外が mscorlib.dll で発生しました
型 'System.DivideByZeroException' の初回例外が WindowsFormsApplication1.exe で発生しました
こんにちは!
スレッド 0x5a4 はコード 259 (0x103) で終了しました。
スレッド 0x2b8 はコード 259 (0x103) で終了しました。
プログラム '[580] WindowsFormsApplication1.vshost.exe' はコード 0 (0x0) で終了しました。

0 コメント:

コメントを投稿