例外クラス階層

C++

例外オブジェクトのクラスは決まっておらず、任意のクラスのインスタンスや文字列などなんでもよい。

Java

Throwable            (チェック例外)
  Exception          (チェック例外)
    RuntimeException (非チェック例外)
      ...            (非チェック例外)
    ...              (チェック例外)
  Error              (非チェック例外)
    ...              (非チェック例外)

すべての例外クラスの親クラスは Throwable で、その直接のサブクラスは Exception と Error のみ。

Exception のサブクラスは RuntimeException だけではない。 Exception とそのサブクラスはチェック例外だが、 RuntimeException とそのサブクラスは例外的に非チェック例外になる。

Error とそのサブクラスも非チェック例外で、 NoClassDefFoundError, NoSuchMethodError, StackOverflowError, OutOfMemoryError などがある。

ユーザ定義のクラスは、Exception のサブクラス(RuntimeException のサブクラスを含む)とするのが推奨。

Scala

Javaと同じクラスが使われる。ただし、Javaのチェック例外も含めてすべての例外クラスがScalaでは非チェック例外になる。

PHP

すべての例外クラスは Exception クラスかそのサブクラスである。

例外 | PHP Manual
http://php.net/manual/ja/language.exceptions.php

Exception | PHP Manual
http://php.net/manual/ja/class.exception.php

Ruby

すべての例外クラスは Exception クラスかそのサブクラスである。ユーザ定義のクラスは StandardError のサブクラスとするのが推奨。

rescue節でクラス名を省略すると StandardError が指定されたとみなされ、それ以外の Exception は補足してくれない。 StandardError 以外の Exception は、例えばメモリ不足、スクリプトの文法違反などが該当する。

Perl

標準の例外クラスというのはない。

die には普通は文字列を渡す。

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。