Tôi có một ứng dụng C# gọi một hàm trong một dll C++. Hàm này có thể ném nhiều ngoại lệ khác nhau thừa kế std::exception
. Tôi hiện đang nắm bắt các ngoại lệ này như sau:Làm thế nào để có được một mô tả lỗi std :: ngoại lệ khi gọi một C++ dll từ C#
try
{
//Call to C++ dll
}
catch (System.Exception exception)
{
//Some error handling code
}
Câu hỏi đầu tiên của tôi là mã này sẽ bắt tất cả std::exception
? Câu hỏi thứ hai của tôi là làm thế nào tôi có thể lấy chuỗi std::exception::what
, nếu tôi kiểm tra exception.Message
Tôi chỉ nhận được "Thành phần bên ngoài đã ném một ngoại lệ".
EDIT: Các chức năng trong câu hỏi là trong một tổ chức phi quản lý C++ dll, và nhập khẩu như thế này trong C# lớp:
[DllImport("SomeDLL.dll")]
public extern static void SomeFunction();
Có một phương pháp ToString trả về một chuỗi đại diện của ngoại lệ hiện hành. http://msdn.microsoft.com/en-us/library/system.exception_members.aspx – DumbCoder
http://stackoverflow.com/questions/150544/can-you-catch-a-native-exception-in-c- code/150596 # 150596 – celavek