Bug #19578
closed
abort() shows stack trace when run within rescue clause
Added by Dan0042 (Daniel DeLorme) over 1 year ago.
Updated over 1 year ago.
Description
I sometimes use the pattern print(str) rescue abort
in order to exit without stack trace when the output of a ruby program is interrupted by SIGPIPE, ex: ./printstuff.rb | head
It seems that since ruby 2.7 this results in printing the stack trace. This is not the case when using abort
by itself.
Is this intended? I would expect abort
to behave much like exit(1)
, as it always has.
- Status changed from Open to Rejected
This was a deliberate change, see #16424.
Thank you, I searched but wasn't able to find it.
But in that case I think the documentation should be updated. This:
Terminate execution immediately, effectively by calling Kernel.exit(false). If msg is given, it is written to STDERR prior to terminating.
reads to me like nothing is written to STDERR if msg is not given. Perhaps update to something like:
Terminate execution immediately, effectively by calling Kernel.exit(false). If msg is given, it is written to STDERR prior to terminating. Otherwise, if an exception was raised, print its message and backtrace.
Dan0042 (Daniel DeLorme) wrote in #note-2:
But in that case I think the documentation should be updated.
I agree. Can you please submit a pull request for it?
Note that broken pipe on STDOUT error message will not be shown since ruby 3.0. #14413
jeremyevans0 (Jeremy Evans) wrote in #note-3:
I agree. Can you please submit a pull request for it?
Will do.
nobu (Nobuyoshi Nakada) wrote in #note-4:
Note that broken pipe on STDOUT error message will be shown since ruby 3.0. #14413
That's a great improvement! I can't believe I missed it.
Of course, I missed the word "not", sorry.
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0Like0