try (box (Directory.GetDirectories(dir) ))
with | :? System.UnauthorizedAccessException -> ()
我正在尝试检查该目录是否可访问,因此我不会收到“拒绝访问”错误,但它不起作用,它不会跳过循环
答案 0 :(得分:3)
通常不鼓励将异常用作控制流程的一部分。在尝试枚举其内容之前,最好检查对目录的适当访问权限。尝试这样的事情:
$('a.nav.nav-item').click(() => {
// # remove from existing
$('a.nav.nav-item.selected').toggleClass('selected')
$(this).toggleClass('selected') // # toggle selected on current el
})
答案 1 :(得分:0)
您可能还有其他一些问题,如果您有一个例外try-with
块应该能够处理它,那么您实际上没有得到异常或在周围的代码中有其他问题。你为什么box
?
使用异常作为控制流的厌恶在.NET中是有意义的。在OCaml中,异常被广泛用于此目的,但它们很便宜。在.NET中,这在性能方面更昂贵。也就是说,有时候你确实想要抓住并处理异常,所以我不认为这是一个很大的问题。这例如有效:
open System.IO
let okdir = @"c:\tmp"
let baddir = @"L:\Finance"
let checkDir dir =
try
Directory.GetDirectories(dir) |> ignore
printfn "%A" "Processed"
with
| :? System.UnauthorizedAccessException as ex -> failwith ex.Message
| :? System.IO.IOException as ex -> failwith ex.Message
// | :? System.Exception as ex -> failwith ex.Message
checkDir okdir
//"Processed"
//val it : unit = ()
checkDir baddir
//System.Exception: Access to the path 'L:\Finance' is denied.