如何在F#中使用有意义的消息抛出异常?

kha*_*hik 2 c# f# exception

如何在F#中抛出有意义的异常并在C#中捕获它们?

使用以下代码:

F#图书馆:

module Test

exception TestExc of string

let throwit message : unit=
    raise (TestExc("custom exception with message: " + message))
Run Code Online (Sandbox Code Playgroud)

C#客户端:

namespace TestExc
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Test.throwit("Hi there");
            }
            catch (Test.TestExc te)
            {
                Console.WriteLine("Caught exception with message: " + te.Message);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

Caught exception with message: Exception of type 'Test+TestExc' was thrown.
Run Code Online (Sandbox Code Playgroud)

但我希望看到Hi there被捕获的异常消息.

以下F#等价物是什么?

class CSTestExc:System.Exception 
{
        public CSTestExc(String message) : base(message) { }
}
Run Code Online (Sandbox Code Playgroud)

Ank*_*kur 5

而不是使用exception TestExc of stringcreate exception创建异常:

type MyExp (msg:string) = 
        inherit Exception(msg)
Run Code Online (Sandbox Code Playgroud)