須藤です。

Ruby 1.9ではたくさんの"incompatible encodings: ..."という例
外を目にすると思うのですが、その例外クラスをArgumentErrorか
らIncompatibleEncodingErrorというような専用の例外クラスにす
るというのはどうでしょうか?

"incompatible encodings: ..."なエラーを例外を捕まえやすくす
ると、エンコーディングを設定し直して再チャレンジするとか、親
切なエラーメッセージを出力するというようなことがしやすくなる
と思います。

  def parse(input)
    begin
      MyParser.new(input).parse
    rescue IncompatibleEncodingError
      puts "input encoding must be #{$!.expected_encoding}"
      puts "but was #{$!.actual_encoding}"
      nil
    end
  end