在Ruby中,错误处理主要可以分为两大类:异常(Exception)和错误(Error)。
- 异常(Exception):
异常是程序在运行过程中遇到的意外情况,通常是可以恢复的。Ruby中的异常类都继承自
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
- 错误(Error):
错误是程序在运行过程中遇到的严重问题,通常是无法恢复的。Ruby中的错误类都继承自
SystemExit
类。以下是一些常见的错误类:
SystemExit
:当exit
或exit!
方法被调用时抛出。SignalException
:当接收到操作系统信号时抛出,如SIGINT
(Ctrl+C)、SIGTERM
等。SystemExit
:当程序正常退出时抛出。
错误通常不需要手动处理,因为它们表示程序无法继续运行。在大多数情况下,应该让异常处理机制捕获这些错误。