我是Ruby的新手,来自Java世界。
我只想在Ruby中复制一个文件: http://apidock.com/ruby/FileUtils/cp
但是,文档并未说明将引发哪些例外情况。 与Javadocs比较:
没有查看FileUtils的源代码,有没有办法告诉可能会引发哪些异常?
答案 0 :(得分:6)
无法保证Ruby中会引发哪个异常。用户可能发送中断,您的文件系统可能无法写入等。而Ruby不保证这一点。但是对于File操作,我可能会看一下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