gpt4 book ai didi

F# 编译器警告 FS0067 的 when 守卫异常

转载 作者:行者123 更新时间:2023-12-01 04:59:15 24 4
gpt4 key购买 nike

在F#中,我们可以方便地使用failwithfailwithf , 两者都抛出 Exception 实例。因此,您可能偶尔需要使用“何时保护”来区分不同的异常条件。

这是一个说明性示例:

    try
let isWednesday = DateTime.Now.DayOfWeek = DayOfWeek.Wednesday
if isWednesday then failwith "Do not run this on Wednesdays!"
with
| :? DivideByZeroException -> printfn "You divided by zero."
| :? Exception as ex when ex.Message.Contains("Wednesdays") -> printfn "I said, %s" ex.Message
| ex -> printfn "%s" ex.Message

但是,上面的代码会导致两个警告:
Program.fs(14,7): warning FS0067: This type test or downcast will always hold 
Program.fs(14,7): warning FS0067: This type test or downcast will always hold

我如何避免该警告?

最佳答案

删除 Exception 的类型测试模式类(class)。这是不必要的。

with
| :? DivideByZeroException -> printfn "You divided by zero."
| ex when ex.Message.Contains("Wednesdays") -> printfn "I said, %s" ex.Message
| ex -> printfn "%s" ex.Message

关于F# 编译器警告 FS0067 的 when 守卫异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52300800/

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