在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代碼。