また昨日の話(id:ABA:20030826#p3)の続き。DのErrorおよびExceptionはdmd\src\phobos\object.dに記述があった。
Exceptionはコンストラクタがthis(char msg)でtoString()メソッドでmsgが帰ってくる。ErrorはExceptionをextendsしたクラスで、コンストラクタにthis(char msg, Error next)というのが加わっている。nextはおそらくエラーのネストを管理するためのもので、JavaのJDK1.4から備わった、Chained Exception Facilityと同じものだろう。
- Chained Exception Facility(http://java.sun.com/j2se/1.4.2/docs/relnotes/features.html#chained-exceptions)
- public Exception(String message, Throwable cause)(http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Exception.html)
なので原因をErrorで表記したいときはError、そうでないときはExceptionを使うことになる。なんかこの区別気持ち悪いなあ。