在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
子句用于確保在異常處理塊執行完畢后,無論是否發生異常,都會執行某些操作。在這個例子中,我們確保在操作完成后關閉文件。