Bug #6286

Add Exception#format method

Added by Vit Ondruch about 2 years ago. Updated over 1 year ago.

[ruby-core:44328]
Status:Assigned
Priority:Normal
Assignee:Yukihiro Matsumoto
Category:core
Target version:next minor
ruby -v:- Backport:

Description

It would be nice if Exception class could be extended by #format method (or method with some more suitable name), which would provide the same formatting as is standard output of Ruby exception, e.g.

boomtest.rb:18:in go': boom (RuntimeError)
from boomtest.rb:34:in
foo'
from boomtest.rb:36

Currently, this formatting is done by errorprint function from evalerror.c. Unfortunately this method is just Ruby's internal.

Please note that there exists exception_string gem, which add similar method [1] to the Exception class.

[1] https://github.com/raggi/exception_string/blob/master/lib/exception_string.rb#L15-19

0001-Feature-6286.patch Magnifier (11.5 KB) Nobuyoshi Nakada, 04/16/2012 08:57 PM

History

#1 Updated by Nobuyoshi Nakada about 2 years ago

  • Tracker changed from Bug to Feature

#2 Updated by Nobuyoshi Nakada about 2 years ago

  • Tracker changed from Feature to Bug
  • Category set to lib
  • Status changed from Open to Feedback
  • Target version set to 2.0.0

vo.x (Vit Ondruch) wrote:

It would be nice if Exception class could be extended by #format method (or method with some more suitable name), which would provide the same formatting as is standard output of Ruby exception, e.g.

Why and how would it be nice?

#3 Updated by Vit Ondruch about 2 years ago

  • ruby -v set to ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-linux]

nobu (Nobuyoshi Nakada) wrote:

Why and how would it be nice?

I'm trying to develop Ruby support for ABRT [1]. The idea is, that I will provide at_exit handler and in this handler, I need to report the backtrace. I'd like to report the same backtrace as Ruby reports when running from command line. Since the Exception cannot provide this format, I need to provide some custom functionality to get the backtrace formatted as Ruby does.

I am probably not the first one who needs it, otherwise the gem would not exist.

Thank you.

[1] https://fedorahosted.org/abrt/

#4 Updated by Vit Ondruch about 2 years ago

It is actually surprising that the formatting of exception is not provided by the Exception class. I realise that it is probably due to some historic reasons, but once the Exception has its #format method, it could be used in place of error_print().

#5 Updated by Nobuyoshi Nakada about 2 years ago

  • Tracker changed from Bug to Feature

#6 Updated by Nobuyoshi Nakada about 2 years ago

  • File 0001-Feature-6286.patchMagnifier added
  • Tracker changed from Feature to Bug
  • Category changed from lib to core
  • ruby -v set to -

Yet I'm not sure whether it's worth, made a patch.

#7 Updated by Vit Ondruch about 2 years ago

Would it be possible to make the #format method public? And if I may be a bit daring, some documentation would be nice. I appreciate your effort. Thank you.

#8 Updated by Koichi Sasada over 1 year ago

  • Status changed from Feedback to Assigned
  • Assignee set to Yusuke Endoh

mame-san, could you check it?

#9 Updated by Yusuke Endoh over 1 year ago

  • Assignee changed from Yusuke Endoh to Yukihiro Matsumoto
  • Target version changed from 2.0.0 to next minor

ko1 (Koichi Sasada) wrote:

mame-san, could you check it?

Looks too specific to include it in core...
At least, it is not a urgent need, I think.

Yusuke Endoh mame@tsg.ne.jp

Also available in: Atom PDF