exception handling tool Wie kann eine Ausnahme(System.Exception) ohne eine Warnung in F#abgefangen werden?




title tag wordpress (2)

Ich habe versucht, eine Ausnahme abzufangen, aber der Compiler gibt eine Warnung aus: Diese Art Test oder Downcast wird immer halten

let testFail () =
    try
        printfn "Ready for failing..."
        failwith "Fails"
    with
    | :? System.ArgumentException -> ()
    | :? System.Exception -> ()

Die Frage ist: Wie mache ich es ohne die Warnung? (Ich glaube, es muss einen Weg geben, dies zu tun, sonst sollte es keine Warnung geben)

Wie C #

try
{
    Console.WriteLine("Ready for failing...");
    throw new Exception("Fails");
}
catch (Exception)
{
}

C #:

void testFail()
{
    try
    {
        Console.WriteLine("Ready for failing...");
        throw new Exception("Fails");
    }
    catch (ArgumentException)
    {
    }
    catch
    {
    }
}

F # äquivalent:

let testFail () =
    try
        printfn "Ready for failing..."
        failwith "Fails"
    with
    | :? System.ArgumentException -> ()
    | _ -> ()

C #:

void testFail()
{
    try
    {
        Console.WriteLine("Ready for failing...");
        throw new Exception("Fails");
    }
    catch (ArgumentException ex)
    {
    }
    catch (Exception ex)
    {
    }
}

F # äquivalent:

let testFail () =
    try
        printfn "Ready for failing..."
        failwith "Fails"
    with
    | :? System.ArgumentException as ex -> ()
    | ex -> ()

C #:

void testFail()
{
    try
    {
        Console.WriteLine("Ready for failing...");
        throw new Exception("Fails");
    }
    catch
    {
    }
}

F # äquivalent:

let testFail () =
    try
        printfn "Ready for failing..."
        failwith "Fails"
    with
    | _ -> ()

Wie Joel bemerkte, würden Sie catch (Exception) in C # aus dem gleichen Grund, den Sie nicht verwenden, nicht verwenden wollen | :? System.Exception -> | :? System.Exception -> in F #.


try 
  .. code ..
with
  | _ as e -> 




f#