Bug #9285

Exception message of Errno::ENOENT contains strings @ rb_sysopen and @ dir_initialize in Ruby 2.1

Added by Andrey Botalov 4 months ago. Updated 3 months ago.

Target version:-
ruby -v:ruby 2.1.0dev (2013-12-20 trunk 44301) [x86_64-linux] Backport:1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN


Exception message of Errno::ENOENT exception contains strings "@ rbsysopen" or "@ dirinitialize" in Ruby 2.1.0-rc1. It doesn't contain them in Ruby 2.0. I would expect exception message not to contain those strings.

Example in Ruby 2.1:
$ irb

2.1.0dev :001 > File.new('/path/to/not/existent/file')
Errno::ENOENT: No such file or directory @ rb_sysopen - /path/to/not/existent/file
from (irb):1:in initialize'
from (irb):1:in
from (irb):1
from /home/andrey/.rvm/rubies/ruby-2.1.0-rc1/bin/irb:11:in <main>'
2.1.0dev :002 > Dir.open('/path/to/not/existent/folder')
Errno::ENOENT: No such file or directory @ dir_initialize - /path/to/not/existent/folder
from (irb):2:in
from (irb):2
from /home/andrey/.rvm/rubies/ruby-2.1.0-rc1/bin/irb:11:in `'
2.1.0dev :003 >

Version: ruby 2.1.0dev (2013-12-20 trunk 44301) [x86_64-linux]
It's installed via RVM.
Ubuntu 13.04

Related issues

Duplicated by Backport21 - Backport #9284: Exception message of Errno::ENOENT contains strings Rejected 12/22/2013


#1 Updated by Yui NARUSE 4 months ago

At first, I say what it is.
It is the C function name where the exception is raised.
Therefore you can't the name from Ruby.

The background is that IO-related exceptions may be raised many places.
If I encounter an unexpected exception, only errno is not sufficient information.
I cannot debug without where the error is generated.
The string gives us the information.

Anyway normal ruby users don't need such information.
Therefore it may be hidden on release build.

#2 Updated by Motohiro KOSAKI 3 months ago

I don't like just turning hidden because I can't agree release build doesn't need debug.
But I agree current format is a little confusable and C function name is less important.
String format could be improved if someone propose better idea.

Also available in: Atom PDF