Łapanie wyjątków w C# rzucanych przez funkcję znajdującą się w DLL C++

0

Hej!
Mam zrealizować projekt w C# a jestem w tym stosunkowo nowa i chciałam się Was zapytać, czy można, a jeśli tak, to w jaki sposób obsłużyć wyjątki z dll pisanej w C++ w C#? Na internecie jest mało w tej kwestii najwięcej osób odradza rzucanie wyjątków z poziomu dll ale u mnie będzie ciężko przerobić funkcję tak aby tego nie robiła.
Z góry dziękuję za odpowiedź!
Pozdrawiam Leks
PS: Spotkałam się z tworzeniem wrappera https://social.msdn.microsoft.com/Forums/vstudio/en-US/0624f3b3-5244-4cb8-be9c-29d464975d20/c-using-c-dll-throwing-exceptions?forum=csharpgeneral co o tym myślicie?

1

Ogólnie zawsze da się przerobić funkcję tak, żeby nie rzucała wyjątku. Polecam monadę Either

0

Co za wyjątki chcesz łapać? Jeżeli "biznesowe", to przemapuj je na C# przy pomocy C++/CLI. Jeżeli nie biznesowe, czyli jakieś dzielenia przez 0, stack overflow lub problemy z pamięcią, to najlepiej łap je po stronie C++, lub przynajmniej napisz jakąś inną dllkę w C++, która doda obsługę przez SEH/VEH. Jeżeli już musisz po stronie C#, to poczytaj o HandleProcessCorruptedStateException i jak łapać AccessViolationException, możesz też dodać obsługę SEH/VEH bezpośrednio z C#, ale zasadniczo to nie jest łatwe i lepiej tą drogą nie iść.

0

Bardzo Wam dziękuję za cenne rady @Kamil Żabiński i @Afish z pewnością poczytam i o monadzie Either i o obsłudze SEH/VEH. Wyjątki, które chcą łapać dotyczą dzielenia przez 0 ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1