Читаемое сообщение об исключении C++CLI в C#?
следующий код создает исключение в C++ и catch в C# C++
throw std::exception ("a C++ exception");
когда я ловлю в C#, он дает мне следующее:
[SEHException (0x80004005): External component has thrown an exception.]
вот как я называю код C++
using Foo.Bar.Sample; //C++ library
....
Class1 class1 = new Class1(); //C++ class
class1.throwAnException();
просто интересно, как я могу получить "исключение C++" в C#
3 ответов
неправильно задал вопрос. Это C++\CLI
не C++
исключения. В C++\CLI выполните следующие действия:
throw gcnew System::Exception("It is a C++\CLI exception");
а не собственное исключение c++
спасибо всем за ответы и комментарии
Я бы рекомендовал вам всегда ловить исключения с той же средой выполнения, которая их бросила.
и единственный способ проанализировать исключение-из C++, так как макет исключения не определен.
Как объяснил @CodeInChaos, C++ и .NET имеют разное время выполнения, поэтому исключения не очень хорошо сосуществуют.
можете ли вы использовать C++ / CLI для части c++? Это позволит унифицировать среду выполнения, и исключения будут совместимы. Обратите внимание, что вы можете иметь небольшую часть кода C++, который использует .NET (код смешанного режима).