Ruby异常文档
我是Ruby的新手,来自Java世界 我只想在Ruby中复制一个文件: 然而,这些文件并没有说明将提出哪些例外情况。 与Javadocs相比:Ruby异常文档,ruby,Ruby,我是Ruby的新手,来自Java世界 我只想在Ruby中复制一个文件: 然而,这些文件并没有说明将提出哪些例外情况。 与Javadocs相比: 如果不看FileUtils的源代码,有没有办法判断可能会引发哪些异常?无法保证在Ruby中会引发哪些异常。用户可能会发送一个中断,您的文件系统可能无法写入,等等。Ruby对此不作任何保证。但对于文件操作,我可能会从IOError及其子项EOFError开始 这可能会使您能够处理非异常(合理预期)事件,例如文件不存在,或没有读访问权限或没有写访问权限,
如果不看FileUtils的源代码,有没有办法判断可能会引发哪些异常?无法保证在Ruby中会引发哪些异常。用户可能会发送一个中断,您的文件系统可能无法写入,等等。Ruby对此不作任何保证。但对于文件操作,我可能会从IOError及其子项EOFError开始 这可能会使您能够处理非异常(合理预期)事件,例如文件不存在,或没有读访问权限或没有写访问权限,您可以对这些事件进行编程、救援和尝试处理 您还可以编写自己的异常,提出自定义异常(可能继承StandardError),并给出适当的操作或反馈 这是刚刚使用Ruby 1.9.3-p327从我的计算机生成的当前异常层次结构
BasicObject
Exception
NoMemoryError
ScriptError
LoadError
Gem::LoadError
NotImplementedError
SyntaxError
SecurityError
SignalException
Interrupt
StandardError
ArgumentError
EncodingError
Encoding::CompatibilityError
Encoding::ConverterNotFoundError
Encoding::InvalidByteSequenceError
Encoding::UndefinedConversionError
FiberError
IOError
EOFError
IndexError
KeyError
StopIteration
LocalJumpError
Math::DomainError
NameError
NoMethodError
RangeError
FloatDomainError
RegexpError
RuntimeError
Gem::Exception
Gem::CommandLineError
Gem::DependencyError
Gem::DependencyRemovalException
Gem::DocumentError
Gem::EndOfYAMLException
Gem::FilePermissionError
Gem::FormatException
Gem::GemNotFoundException
Gem::GemNotInHomeException
Gem::InstallError
Gem::InvalidSpecificationException
Gem::OperationNotSupportedError
Gem::RemoteError
Gem::RemoteInstallationCancelled
Gem::RemoteInstallationSkipped
Gem::RemoteSourceException
Gem::VerificationError
SystemCallError
ThreadError
TypeError
ZeroDivisionError
SystemExit
Gem::SystemExitException
SystemStackError
fatal
一般来说,在Ruby中处理异常的最佳方法是什么?由于文档从未提及任何可能引发的异常,我们如何捕获细粒度异常?=>如果我们捕获根对象,即异常,我认为它太笼统了(可能会处理方法不应该处理的东西)。实际上,这可能是一个很好的新问题。它足够笼统,可以起到帮助作用,但它可能无法澄清当前的问题。但简而言之,假设您想要捕获用户中断。我们可能会援救
SignalException
,但这会援救我们可能不想援救的其他异常。然后我们看一下表中显示的子异常,也就是说中断
。现在,我们可以优雅地关闭一个程序,在这个程序中,可能有人按下了ctrl-c
。仅供参考:最好使用“trap”来处理UNIX信号。