例外クラス階層
C++ 2013/09/11
例外オブジェクトのクラスは決まっておらず、任意のクラスのインスタンスや文字列などなんでもよい。
Java 2013/08/22
Throwable (チェック例外)
Exception (チェック例外)
RuntimeException (非チェック例外)
... (非チェック例外)
... (チェック例外)
Error (非チェック例外)
... (非チェック例外)
すべての例外クラスの親クラスは Throwable で、その直接のサブクラスは Exception と Error のみ。
Exception のサブクラスは RuntimeException だけではない。
Exception とそのサブクラスはチェック例外だが、
RuntimeException とそのサブクラスは例外的に非チェック例外になる。
Error とそのサブクラスも非チェック例外で、
NoClassDefFoundError, NoSuchMethodError, StackOverflowError,
OutOfMemoryError などがある。
ユーザ定義のクラスは、Exception のサブクラス(RuntimeException のサブクラスを含む)とするのが推奨。
Scala 2013/10/08
Javaと同じクラスが使われる。ただし、Javaのチェック例外も含めてすべての例外クラスがScalaでは非チェック例外になる。
PHP 2014/06/23
すべての例外クラスは Exception クラスかそのサブクラスである。
例外 | PHP Manual
http://php.net/manual/ja/language.exceptions.php
Exception | PHP Manual
http://php.net/manual/ja/class.exception.php
Ruby 2014/05/26
ExceptionStandardError- …
- …
すべての例外クラスは Exception クラスかそのサブクラスである。ユーザ定義のクラスは StandardError のサブクラスとするのが推奨。
rescue節でクラス名を省略すると StandardError が指定されたとみなされ、それ以外の Exception は補足してくれない。
StandardError 以外の Exception は、例えばメモリ不足、スクリプトの文法違反などが該当する。
Perl 2013/10/08
標準の例外クラスというのはない。
die には普通は文字列を渡す。