在Ruby中,错误处理主要可以分为两大类:异常(Exception)和错误(Error)。
StandardError
类。以下是一些常见的异常类:SystemExit
:当exit
或exit!
方法被调用时抛出。Interrupt
:当用户中断程序(如按下Ctrl+C)时抛出。RuntimeError
:当程序中出现运行时错误时抛出,如除以零、数组越界等。SystemStackError
:当程序运行时的栈溢出时抛出。Errno
:当操作系统返回错误代码时抛出,如文件不存在、权限不足等。这些错误通常可以通过检查$!
全局变量获取。NoMethodError
:当尝试调用不存在的方法时抛出。ArgumentError
:当传递给方法的参数类型不正确时抛出。TypeError
:当操作的对象类型不正确时抛出。要处理异常,可以使用begin
、rescue
、ensure
和raise
关键字。例如:
begin
# 可能引发异常的代码
rescue SystemExit => e
puts "Exiting with status #{e.status}"
rescue Interrupt => e
puts "Interrupted by user"
rescue StandardError => e
puts "StandardError: #{e.message}"
end
SystemExit
类。以下是一些常见的错误类:SystemExit
:当exit
或exit!
方法被调用时抛出。SignalException
:当接收到操作系统信号时抛出,如SIGINT
(Ctrl+C)、SIGTERM
等。SystemExit
:当程序正常退出时抛出。错误通常不需要手动处理,因为它们表示程序无法继续运行。在大多数情况下,应该让异常处理机制捕获这些错误。