4

私はRubyの初心者で、Javaの世界から来ています。

Rubyでファイルをコピーしたいだけです:http: //apidock.com/ruby/FileUtils/cp

ただし、ドキュメントには、どの例外が発生するかは記載されていません。Javadocと比較してください:

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のソースコードを見ずに、どの例外が発生する可能性があるかを判断する方法はありますか?

4

1 に答える 1

6

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
于 2012-12-14T11:13:00.513 に答える