例外 (exception)

例外の throw と catch。

Java

import java.io.IOException;
import java.util.Random;

...

try {
	// ランダムにどちらかの例外発生
	if (new Random().nextInt(2) == 0) {
		throw new IOException();
	} else {
		throw new Exception();
	}
} catch (IOException e) {
	// IOException を catch
	System.out.println("IO");
} catch (Throwable e) {
	// その他の Throwable を catch
	System.out.println(e);
	e.printStackTrace();
} finally {
	// 最後に常に実行
	System.out.println("finally");
}

上では例外のコールスタックを取得している。現在位置のコールスタック取得はコールスタックの項目を参照。

メニューに戻る

Python

import random
import sys
import traceback


try:
	# ランダムにどちらかの例外発生
	if (random.randrange(0, 2) == 0):
		raise IOError
	else:
		raise Exception, 'foo'
except IOError:
	# IOError を catch
	print 'IO'
except:
	# その他の例外を catch
	(type, value, tr) = sys.exc_info()
	print type
	print value
	traceback.print_tb(tr)
finally:  # except と混在できるのは 2.5 から
	# 最後に常に実行
	print "finally"

上では例外のコールスタックを取得している。現在位置のコールスタック取得はコールスタックの項目を参照。

メニューに戻る

Ruby

begin
	# ランダムにどちらかの例外発生
	if rand(2) == 0 then
		raise IOError
	else
		raise "foo"
	end
rescue IOError
	# IOError を catch
	puts "IO"
rescue
	# その他の例外を catch
	puts $!  # Exception
	puts $@  # Call stack
ensure
	# 最後に常に実行
	puts "ensure"
end

上では例外のコールスタックを取得している。現在位置のコールスタック取得はコールスタックの項目を参照。

メニューに戻る