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