在Java中调用C#代码时,可以使用Java Native Interface (JNI) 或者 Java Native Access (JNA) 库。这里我们将使用JNI作为示例来处理异常。
首先,创建一个C#类库项目并添加以下代码:
using System;
namespace CSharpLibrary
{
public class MyClass
{
[return: MarshalAs(UnmanagedType.LPWStr)]
public string MyMethod()
{
try
{
throw new Exception("这是一个C#异常");
}
catch (Exception ex)
{
return "捕获到异常: " + ex.Message;
}
}
}
}
接下来,创建一个Java项目并添加以下代码:
public class JavaCallCSharp {
static {
System.loadLibrary("csharp_library");
}
public static void main(String[] args) {
CSharpLibrary.MyClass myClass = new CSharpLibrary.MyClass();
String result = myClass.MyMethod();
System.out.println(result);
}
}
在这个例子中,我们使用JNI加载C#库(csharp_library),然后创建一个C#类的实例并调用其方法。如果在C#方法中发生异常,它将被捕获并转换为一个字符串,然后返回给Java代码。
注意:在运行此示例之前,请确保已正确配置C#和Java项目的环境,并生成了JNI头文件。具体步骤如下:
javah
工具生成JNI头文件:javah -jni CSharpLibrary.MyClass
。这样,当Java代码调用C#方法时,任何在C#方法中抛出的异常都将被捕获并转换为字符串返回给Java代码。