Was ist der Unterschied zwischen einem Trap, einem Fehler, einem Fehler und einem Programmabbruch? [geschlossen]

9

Ich sehe oft die folgenden Begriffe in C ++ - Interviewfragen:

  • Programm abbrechen
  • Fehler
  • Fehler
  • Falle

Ich bin nicht sicher, die Unterschiede zwischen diesen Begriffen klar zu sehen. Kann jemand eine klare und prägnante Erklärung geben?

Bearbeiten: Die Kontextfrage lautete: " Was passiert, wenn Sie einen Zeiger zweimal löschen? " Aber für mich ist der Unterschied zwischen diesen Begriffen wichtiger als nur der antworte.

    
Laurent 12.08.2013, 10:08
quelle

2 Antworten

4

Diese sind nicht wirklich spezifisch für C ++.

  • Abbruch ist, wenn Sie das Programm oder eine bestimmte Operation wegen eines Problems beenden. Es gibt eine C ++ - Bibliotheksfunktion std::abort , die von der C-Bibliothek geerbt wurde, wodurch das Programm beendet wird als ob durch ein externes Signal, und nicht Destruktoren oder Aufräumarbeiten.

  • Ein Fehler ist, wenn etwas schief geht. In C ++ werden viele Arten von Fehlern nicht sofort sofort erkannt. C ++ gibt stattdessen undefiniertes Verhalten an, was zu einer ruhigen Speicherbeschädigung führen kann, die später zu mysteriösem Fehlverhalten führen kann.

  • Ein Fehler ist, wenn ein Programm das Falsche tut. Das ist ein ziemlich allgemeiner Begriff für die Technik. Der spitzhaarige Chef ist wahrscheinlich mit diesem Konzept vertrauter als die anderen, weil es der einzige ist, dessen sich ein Kunde wirklich bewusst ist.

  • Ein Trap ist, wenn das Programm einen Fehler erkennt und entsprechende Maßnahmen ergreift.

Wenn Sie also feststellen, dass das Netzwerk ausgefallen ist, und dem Benutzer eine Nachricht wie "Konnte nicht fortfahren; Ihr Dokument wurde automatisch gespeichert" vor dem Beenden angezeigt wurde, haben Sie einen Fehler festgestellt und abgebrochen, aber trotzdem war es ein Fehler.

    
Potatoswatter 12.08.2013 10:52
quelle
0

All diese Begriffe sind ein bisschen vage, vor allem Fehler und Fehler. Sie bedeuten grundsätzlich dasselbe: etwas stimmt nicht. Programmabbruch bezieht sich wahrscheinlich auf den Aufruf der C-Bibliotheks-Standardfunktion abbrechen , die das SIGABRT-Signal auslöst. Dies führt normalerweise zu einem ungewissen Programmabbruch, hängt aber von der Plattform ab und davon, ob das Signal abgefangen wird oder nicht. Trap könnte sich auf das Signalfangen im Allgemeinen beziehen, das durch die C-Bibliothek-Standardfunktion Signal gesteuert wird.

    
Paul Evans 12.08.2013 10:21
quelle

Tags und Links