在Ruby中,处理输入输出(I/O)操作时可能会遇到各种异常,例如文件不存在、权限问题等。为了处理这些异常,你可以使用Ruby的异常处理机制,如begin-rescue
语句。
以下是一个简单的示例,展示了如何在Ruby中处理I/O操作的异常:
begin
# 尝试打开一个文件并读取内容
file = File.open("non_existent_file.txt", "r")
content = file.read
puts "文件内容:"
puts content
rescue Errno::ENOENT => e
# 处理文件不存在的异常
puts "错误:文件不存在。"
rescue Errno::EACCES => e
# 处理文件访问权限不足的异常
puts "错误:没有足够的权限读取文件。"
rescue => e
# 处理其他未知异常
puts "错误:发生未知错误。"
ensure
# 无论是否发生异常,都会执行此块
if file
file.close
end
end
在这个示例中,我们使用begin-rescue
语句来捕获可能发生的异常。如果文件不存在,将捕获Errno::ENOENT
异常;如果文件访问权限不足,将捕获Errno::EACCES
异常;对于其他未知异常,将捕获rescue => e
。
ensure
子句用于确保在异常处理块执行完毕后,无论是否发生异常,都会执行某些操作。在这个例子中,我们确保在操作完成后关闭文件。