[ruby-core:63917] [CommonRuby - Feature #8257] Exception#cause to carry originating exception along with new one

From: ko1@...
Date: 2014-07-21 13:23:13 UTC
List: ruby-core #63917
Issue #8257 has been updated by Koichi Sasada.


 (2014/07/21 1:50), headius@headius.com wrote:
 > I agree with Benoit that the cause exception should be reflected in the error output, as on the JVM. What are the objections?
 
 What happen on exception from deep backtrace, occurred by other more
 deeper exception?  Show all long two backtraces?
 
 -- 
 // SASADA Koichi at atdot dot net

----------------------------------------
Feature #8257: Exception#cause to carry originating exception along with new one
https://bugs.ruby-lang.org/issues/8257#change-47947

* Author: Charles Nutter
* Status: Closed
* Priority: Normal
* Assignee: Yukihiro Matsumoto
* Category: 
* Target version: Ruby 2.1.0
----------------------------------------
Often when a lower-level API raises an exception, we would like to re-raise a different exception specific to our API or library. Currently in Ruby, only our new exception is ever seen by users; the original exception is lost forever, unless the user decides to dig around our library and log it. We need a way to have an exception carry a "cause" along with it.

Java has getCause/setCause and standard constructors that take a cause exception. Printing out an exception's backtrace then reports both that exception and any "cause" exception.

Rubinius has added a similar feature: https://gist.github.com/dbussink/b2e01e51d0c50b27004f

The changes required for this feature are pretty benign:

* Exception#cause and #cause= accessors.
* A new set of Kernel#raise overloads that accept (as a trailing argument, probably) the "cause" exception.
* Modifications to backtrace-printing logic to also display backtrace information from the "cause" exception (and in turn, from any nested "cause" exceptions).

There's some discussion here about alternatives to #cause, none of which are quite as elegant as having it built in: http://www.skorks.com/2013/04/ruby-why-u-no-have-nested-exceptions/



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

In This Thread