gpt4 book ai didi

exception - Haskell - 检查文件句柄的有效性

转载 作者:行者123 更新时间:2023-12-02 22:28:19 25 4
gpt4 key购买 nike

好吧,伙计们, super 简单的问题(谷歌没有帮助我解决这个问题似乎很奇怪):

import IO

--.... yadda, yadda, yadda

file <- openFile "/some/path" ReadMode

如何检查从 openFile 获取的句柄是否为有效句柄,即文件是否存在且已成功打开?

最佳答案

如果文件不存在,或者发生其他错误,对 openFile 的调用将失败并出现异常。

例如:

import System.IO

main = do
openFile "/some/path" ReadMode

失败:

A.hs: /some/path: openFile: does not exist (No such file or directory)

openFile可能抛出的异常类型are listed here,并包括:

  • 如果文件已打开且无法重新打开,则出现 isAlreadyInUseError 错误;
  • 如果文件不存在则出现isDoesNotExistError;或
  • 如果用户没有打开文件的权限,则会出现 isPermissionError 错误。

您可以使用 Control.Exception 捕获这些错误,像这样:

{-# LANGUAGE ScopedTypeVariables #-}

import System.IO
import Control.Exception

main = do
handle (\(e :: IOException) -> print e >> return Nothing) $ do
h <- openFile "/some/path" ReadMode
return (Just h)

关于exception - Haskell - 检查文件句柄的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5886705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com