Was ist eine Ausnahmebehandlung mit Persönlichkeitsfunktion?

9

Ich habe mir die Dokumentation für die LLVM EH-Intrinsic und auch die Itanium ABI angeschaut und bin auf einige Dinge gestoßen.

Was ist eine Ausnahmepersönlichkeitsfunktion? Welche Aufgaben führt es aus? Wie würde ich einen erstellen?

    
Puppy 16.05.2013, 20:57
quelle

1 Antwort

7

Ich hatte genau die gleiche Frage. Ich habe gerade diese Artikel gefunden, die ausführlich erklären, wie es funktioniert, die vollständige Ausnahme Handhabung, einschließlich des genauen Zwecks der Persönlichkeitsfunktion und einer schrittweisen Implementierung.

Um eine Antwort auf SO zu erhalten, hier ist eine kurze Zusammenfassung des Persönlichkeitsverhaltens, wenn eine Ausnahme auftritt (aber Sie sollten sich wirklich die 18 Artikel ansehen, die dieser Typ darüber geschrieben hat!):

  • Zuerst wird es für jeden Stack-Frame (Lookup-Phase) einmal aufgerufen und muss einen Wert (von einer Enumeration) zurückgeben, der sagt, dass er abwickeln soll, wenn der aktuelle Stack-Frame die Exception abfangen kann. Es wird erwartet, dass die Persönlichkeit eine bestimmte Menge von Tabellen am Ende der Funktion verwendet, um diese Informationen abzurufen.

  • Wenn der Stapelrahmen die Ausnahme abfangen kann, wird die Persönlichkeit ein zweites Mal mit einem anderen actions -Argument aufgerufen (Bereinigungsphase).

Maël Nison 20.05.2013, 22:12
quelle

Tags und Links