開発環境
- Microsoft Windows 8 Pro 64bit 日本語 (OS)
- Microsoft Visual Studio Express 2012 for Windows Desktop (IDE)
- プログラミング言語: C#
『初めてのC# 第2版』(Jesse Liberty+Brian MacDonald著、日向俊二訳、オライリー・ジャパン、2006年、ISBN978-487312-194-7)の 第16章(例外)16.12(練習問題)練習16-1.を解いてみる。
その他参考書籍
練習16-1.
コード
using System;
using System.Collections.Generic;
class Cat
{
private int age;
public Cat(int age)
{
this.age = age;
}
public int Age
{
get { return age; }
}
}
class Tester
{
public void Run()
{
try
{
Console.WriteLine("Catオブジェクトの割り当て開始");
Cat tama = new Cat(5);
Cat sora = new Cat(10);
List<Cat> cats = new List<Cat>();
cats.Add(tama);
cats.Add(sora);
Console.WriteLine("{0}, {1}", cats[0].Age, cats[1].Age);
// ここで例外発生
Console.WriteLine(cats[2]);
Console.WriteLine("tryブロック終了");
}
catch (ArgumentException 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, 10 インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さく なければなりません。 パラメーター名: index Catオブジェクトの割り当て解除 続行するには何かキーを押してください . . .
ちなみにJavaScriptの場合。
コード(BBEdit)
try{
var Cat = function ( age ) {
var age = age;
this.getAge = function( ) {
return age;
};
},
tama = new Cat(5),
sora = new Cat(10),
cats = [tama, sora],
result = "",
i, max;
for (i = 0, max = cats.length; i < max; i += 1) {
result += cats[i].getAge() + "\n";
}
// C#の場合と違い、JavaScriptではcats[2]にアクセスすることはundefinedになるだけで例外にならない
// ただし、undefinedでgetAgeを呼び出すところで例外になる
result += cats[2] + "\n";
result += cats[2].getAge() + "\n";
result += "tryブロック終了\n";
} catch (e) {
result += e;
} finally {
$('#pre0').text(result);
}
pythonの場合。
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-
class Cat:
def __init__(self, age):
self._age = age
def getAge(self):
return self._age
try:
tama = Cat(5)
sora = Cat(10)
cats = [tama, sora]
for cat in cats:
print(cat.getAge())
print(cats[2].getAge())
print("tryブロック終了")
except Exception as err:
print(type(err))
print(err.args)
print(err)
finally:
print("Catオブジェクトの割り当て解除")
入出力結果(Terminal)
$ ./sample.py
5
10
<class 'IndexError'>
('list index out of range',)
list index out of range
Catオブジェクトの割り当て解除
$
0 コメント:
コメントを投稿