Exception のコード

自分が書いたコードじゃないのだけど、Exceptionをextendして作られた ~Exception クラスがあって、そのコンストラクタで super してないものがあったので、そもそも Exception クラスのコンストラクタではなにしているのだろうと、ちょっと気になった。軽く見てみると、Exception クラスでは、super(~) で Throwable のコンストラクタを呼んでるだけだった。Throwable のコンストラクタでは、fillInStackTrace() を呼んでいる。で、fillInStackTrace() は何かなっと思ったら、ネイティブメソッドだった・・・。cpp のコードを追っていくのも面倒になり、かつ、本来やるべきことから、かなり脱線してきたので、これ以上は追わずにおこう。まぁ、ざっと見た感じ、javadoc にある通り、「Fills in the execution stack trace.」だと思う。というわけで、普通は、new すれば、スタックトレースを作るのね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です