如何在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)
而不是使用exception TestExc of stringcreate exception创建异常:
type MyExp (msg:string) =
inherit Exception(msg)
Run Code Online (Sandbox Code Playgroud)