開発環境
- 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 コメント:
コメントを投稿