how to catch win32 dll exception in c#?

M

Marcus Heege

BEelzebub said:
how to catch win32 dll exception in c#?

If a C++ exceptions is thrown, you can catch the exception as a
System::Runtime::InteropServices::SEHException.

If a Win32 SEH exception is thrown, it depends on the exception code. Most
exception codes are also caught as
System::Runtime::InteropServices::SEHException, but there are some
exceptions. E. g. The exception code EXCEPTION_INT_DIVIDE_BY_ZERO is mapped
to a System::DevideByZeroException.

If you use this exception mapping intensively, you should also notice that
there is a breaking change in v2.0:
EXCEPTION_ACCESS_VIOLATION is caught as System::AccessViolation in 2.0,
whereas it is caught as System::NullReferenceException in 1.1 and 1.0. To
get the old behavior you can add an element
<legacyNullReferenceExceptionPolicy enabled="1"/> to the <runtime> element
of your config file.

However, in all these cases, you loose significant aspects of your
exception. If you can not afford this, you have to use C++/CLI, where you
can catch Win32 exceptoins as well as C++ exceptions in managed code.

Marcus Heege
DevelopMentor
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top