在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
子句用于确保在异常处理块执行完毕后,无论是否发生异常,都会执行某些操作。在这个例子中,我们确保在操作完成后关闭文件。