エラーの種類を型で区別するというのがそもそも無理があったんだろうな。