Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您可以在Ruby中输出自定义异常消息,但不能输出默认异常消息吗?_Ruby - Fatal编程技术网

您可以在Ruby中输出自定义异常消息,但不能输出默认异常消息吗?

您可以在Ruby中输出自定义异常消息,但不能输出默认异常消息吗?,ruby,Ruby,我一直在尝试创建用ruby打开文件的异常处理。我尝试过使用raise和rescue方法,但所有类型要么显示了自定义和默认值(而不仅仅是自定义),要么完全出错 这是因为系统没有引发异常,它只是有: system如果命令给出零退出状态,则返回true;如果命令给出非零退出状态,则返回false。如果命令执行失败,则返回nil。错误状态在$?中可用 因此,您可以看到它不是Ruby打印错误消息,而是open命令。它很容易在您的shell中进行测试: $ open bar The file /Users/

我一直在尝试创建用ruby打开文件的异常处理。我尝试过使用raise和rescue方法,但所有类型要么显示了自定义和默认值(而不仅仅是自定义),要么完全出错


这是因为
系统
没有引发异常,它只是有:

system
如果命令给出零退出状态,则返回
true
;如果命令给出非零退出状态,则返回
false
。如果命令执行失败,则返回
nil
。错误状态在
$?
中可用

因此,您可以看到它不是Ruby打印错误消息,而是
open
命令。它很容易在您的shell中进行测试:

$ open bar
The file /Users/foo/bar does not exist.
$ echo $?
1
在Ruby中确认:

system 'open bar'
The file /Users/foo/bar does not exist.
=> false
puts $?
pid 9610 exit 1
=> nil
因此,没有什么需要拯救的,因为从来没有发生过异常。您必须评估
系统
的返回值或进程的退出代码(
$?
),以确定对
系统
的调用是否成功

如果您根本不想看到
open
中的任何输出,请使用此选项重定向:

system 'open foo > /dev/null 2>&1'
=> false

请看这一页。问题需要自己解决。另外,请发布文本,而不是文本图像,或指向文本图像的链接。您正在呼叫系统--它将有自己的输出(可能是
stderr
)。修复了它,我只需要将系统调用放在raise语句之后