OS.FileSys.mkDir 当目录已经存在时不会引发异常
OS.FileSys.mkDir that does not raise exception when the directory already exists
我正在尝试编写一个创建目录但在目录已存在时不会引发错误的函数。这是函数:
fun ensureDir s =
(OS.FileSys.mkDir s)
handle OS.SysErr (_, SOME Posix.Error.exist) => ()
我的模式 OS.SysErr (_, SOME Posix.Error.exist)
是基于以下事实:当目录已经存在时 OS.FileSys.mkDir
失败并显示以下错误消息:
- Poly/ML:
Exception- SysErr ("File exists", SOME EEXIST) raised
- SML/NJ:
uncaught exception SysErr [SysErr: File exists [exist]]
raised at: <mkdir.c>
但是,当我尝试在 Poly/ML shell:
中定义函数时出现此错误
poly: : error: qualified name Posix.Error.exist illegal here
Static Errors
这是SML/NJ中的错误:
Error: variable found where constructor is required: Posix.Error.exist
我在函数定义中犯了什么错误?
(Poly/ML 5.7.1; SML/NJ 110.79; Ubuntu 20.04)
Posix.Error.exist
是一个 val
而不是构造函数(如 SOME
)所以
您不能将它用作模式匹配构造中的模式。这里
是您打算执行的等效代码。
fun ensureDir s =
(OS.FileSys.mkDir s)
handle e as (OS.SysErr (_, SOME err)) =>
if err = Posix.Error.exist
then ()
else raise e
;
我正在尝试编写一个创建目录但在目录已存在时不会引发错误的函数。这是函数:
fun ensureDir s =
(OS.FileSys.mkDir s)
handle OS.SysErr (_, SOME Posix.Error.exist) => ()
我的模式 OS.SysErr (_, SOME Posix.Error.exist)
是基于以下事实:当目录已经存在时 OS.FileSys.mkDir
失败并显示以下错误消息:
- Poly/ML:
Exception- SysErr ("File exists", SOME EEXIST) raised
- SML/NJ:
uncaught exception SysErr [SysErr: File exists [exist]] raised at: <mkdir.c>
但是,当我尝试在 Poly/ML shell:
中定义函数时出现此错误poly: : error: qualified name Posix.Error.exist illegal here
Static Errors
这是SML/NJ中的错误:
Error: variable found where constructor is required: Posix.Error.exist
我在函数定义中犯了什么错误?
(Poly/ML 5.7.1; SML/NJ 110.79; Ubuntu 20.04)
Posix.Error.exist
是一个 val
而不是构造函数(如 SOME
)所以
您不能将它用作模式匹配构造中的模式。这里
是您打算执行的等效代码。
fun ensureDir s =
(OS.FileSys.mkDir s)
handle e as (OS.SysErr (_, SOME err)) =>
if err = Posix.Error.exist
then ()
else raise e
;