Ruby异常的文档

时间:2012-12-14 09:40:07

标签: ruby

我是Ruby的新手,来自Java世界。

我只想在Ruby中复制一个文件: http://apidock.com/ruby/FileUtils/cp

但是,文档并未说明将引发哪些例外情况。 与Javadocs比较:

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#copy(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...)

没有查看FileUtils的源代码,有没有办法告诉可能会引发哪些异常?

1 个答案:

答案 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