Ruby 2.6 の変更点 - Exception

Ruby2.6アドベントカレンダーの9日目の記事です。

qiita.com

Exception

Exception#full_message:highlight, :order オプション追加

https://bugs.ruby-lang.org/issues/14324

2.5 で Exception#full_message で例外終了時に標準エラー出力に出力されるバックトレース情報を文字列として取得できるようになりました。 この文字列は、標準エラー出力が端末の時にハイライト用のエスケープコードつきで浅い順に生成され、そうでない場合にエスケープコード無しで深い順に生成されます。

表示順とハイライトするかどうかをオプションで指定することができるようになりました。

def hoge
  raise
end
def fuga
  hoge
end
begin
  fuga
rescue => e
  e.full_message                    #=> 標準エラー出力が端末かどうかに依存
  e.full_message(highlight: true)   #=> ハイライトあり
  e.full_message(highlight: false)  #=> ハイライトなし
  e.full_message(order: :top)       #=> 深い順
  e.full_message(order: :bottom)    #=> 浅い順
end

これは実際には 2.6 ではなく 2.5.1 からの機能です。