创建自定义异常类型
自定义异常是任何扩展 Exception
或 Exception
子类的类。
一般来说,你应该总是延长 StandardError
或后代。Exception
系列通常用于虚拟机或系统错误,抢救它们可以防止强制中断按预期工作。
# Defines a new custom exception called FileNotFound
class FileNotFound < StandardError
end
def read_file(path)
File.exist?(path) || raise(FileNotFound, "File #{path} not found")
File.read(path)
end
read_file("missing.txt") #=> raises FileNotFound.new("File `missing.txt` not found")
read_file("valid.txt") #=> reads and returns the content of the file
通过在末尾添加 Error
后缀来命名异常是很常见的:
ConnectionError
DontPanicError
但是,当错误不言自明时,你不需要添加 Error
后缀,因为这将是多余的:
FileNotFound
vsFileNotFoundError
DatabaseExploded
vsDatabaseExplodedError