snuffkinの遊び場

IT関係、スポーツ、数学等に関することを、気が向いたときに書いてます。

Throwableを継承したクラス生成時のチェック

今日のHack。これまた、某同僚から聞いた困った報告が元ネタです。
時と場合によりけりですが、Throwableを継承したクラスをデフォルトコンストラクタでnewしないで欲しいと思うケースがあります。「スタックトレースだけ出力されても、詳細メッセージが分かんね〜よ!」って現地で苦労しないためのHackです。

    /**
     * @when
     *   newInstance.target.parameters = ()
     */
    public void found(CtNewInstance<? extends Throwable> newInstance,
                      Messager messager) {
        messager.warn(newInstance,
                      "Throwableを継承したクラスをデフォルトコンストラクタでnewしています。");
    }

いいですね、これ。ちょっと修正すれば、応用も利きますね。