RSS

タグ別アーカイブ: 既定の例外

Crystal: 既定の例外クラス

例外が発生すると、例外クラスがインスタンス化され rescue 句でキャッチできる。

すべての例外の基底クラスは Exception であり、このクラスから派生した多数のクラスが存在する。

以下にそれらを挙げる。

  • ArgumentError
  • Channel/ClosedError
  • CSV/MalformedCSVError
  • Digest/FinalizedError
  • DivisionByZeroError
  • Enumerable/EmptyError
  • Enumerable/NotFoundError
  • File/AccessDeniedError
  • File/AlreadyExistsError
  • File/BadExecutableError
  • File/BadPatternError
  • File/NotFoundError
  • Server/ClientError
  • IndexError
  • InvalidByteSequenceError
  • IO.EOFError
  • IO.TimeoutError
  • JSON/SerializableError
  • KeyError
  • NilAssertionError
  • NotImplementedError
  • OpenSSL/Digest/UnsupportedError
  • OverflowError
  • RuntimeError
  • Socket/ConnectError
  • System/Group/NotFoundError
  • System/User/NotFoundError
  • SystemError
  • Time/FloatingTimeConversionError
  • Time/Location/InvalidLocationNameError
  • Time/Location/InvalidTimezoneOffsetError
  • Time/Location/InvalidTZDataError
  • WinError

これらを rescue 句で使う場合、Ruby と書き方が異なるので注意すること。下に例を示す。

a = {A:0, B:2}
begin
  a["A"]
  puts "OK"
rescue e: KeyError
  puts e.message
rescue e: RuntimeError
  puts e.message
rescue
  puts "Fatal error"
end
 
コメントする

投稿者: : 2023/10/03 投稿先 Crystal

 

タグ: ,