Ejemplo
int *ptr;
*ptr = 1000;
kann ich mit Standard-C++ eine Ausnahme von der Speicherzugriffsverletzung abfangen, ohne dass ich eine microsoft-spezifische.
Ejemplo
int *ptr;
*ptr = 1000;
kann ich mit Standard-C++ eine Ausnahme von der Speicherzugriffsverletzung abfangen, ohne dass ich eine microsoft-spezifische.
Wie bereits erwähnt, gibt es auf der Windows-Plattform keine Möglichkeit, die nicht von Microsoft oder einem Compilerhersteller stammt. Es ist jedoch offensichtlich nützlich, diese Arten von Ausnahmen in der normalen try { } catch (exception ex) { } Art und Weise für die Fehlerberichterstattung und mehr eine anmutige Beendigung Ihrer App (wie JaredPar sagt, die App ist jetzt wahrscheinlich in Schwierigkeiten) zu fangen. Wir verwenden _se_translator_function in einem einfachen Klassenwrapper, der uns erlaubt, die folgenden Ausnahmen in einem try-Handler abzufangen:
DECLARE_EXCEPTION_CLASS(datatype_misalignment)
DECLARE_EXCEPTION_CLASS(breakpoint)
DECLARE_EXCEPTION_CLASS(single_step)
DECLARE_EXCEPTION_CLASS(array_bounds_exceeded)
DECLARE_EXCEPTION_CLASS(flt_denormal_operand)
DECLARE_EXCEPTION_CLASS(flt_divide_by_zero)
DECLARE_EXCEPTION_CLASS(flt_inexact_result)
DECLARE_EXCEPTION_CLASS(flt_invalid_operation)
DECLARE_EXCEPTION_CLASS(flt_overflow)
DECLARE_EXCEPTION_CLASS(flt_stack_check)
DECLARE_EXCEPTION_CLASS(flt_underflow)
DECLARE_EXCEPTION_CLASS(int_divide_by_zero)
DECLARE_EXCEPTION_CLASS(int_overflow)
DECLARE_EXCEPTION_CLASS(priv_instruction)
DECLARE_EXCEPTION_CLASS(in_page_error)
DECLARE_EXCEPTION_CLASS(illegal_instruction)
DECLARE_EXCEPTION_CLASS(noncontinuable_exception)
DECLARE_EXCEPTION_CLASS(stack_overflow)
DECLARE_EXCEPTION_CLASS(invalid_disposition)
DECLARE_EXCEPTION_CLASS(guard_page)
DECLARE_EXCEPTION_CLASS(invalid_handle)
DECLARE_EXCEPTION_CLASS(microsoft_cpp)
Die ursprüngliche Klasse stammt aus diesem sehr nützlichen Artikel:
Ein solcher Verstoß bedeutet, dass mit dem Code etwas ernsthaft falsch läuft und er unzuverlässig ist. Ich kann verstehen, dass ein Programm versuchen könnte, die Daten des Benutzers so zu speichern, dass sie hoffentlich nicht überschrieben werden, in der Hoffnung, dass die Daten des Benutzers nicht bereits beschädigt sind, aber es gibt per Definition keine Standardmethode für den Umgang mit undefiniertem Verhalten.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.