例外クラス階層
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
Exception
StandardError
- …
- …
すべての例外クラスは Exception
クラスかそのサブクラスである。ユーザ定義のクラスは StandardError
のサブクラスとするのが推奨。
rescue
節でクラス名を省略すると StandardError
が指定されたとみなされ、それ以外の Exception
は補足してくれない。
StandardError
以外の Exception
は、例えばメモリ不足、スクリプトの文法違反などが該当する。
Perl 2013/10/08
標準の例外クラスというのはない。
die
には普通は文字列を渡す。