Ausnahmen in C ++





Ausnahmen in C ++, c ++ Ausnahmen, Programmieren für Anfänger

manchmal, während Programme, Es gibt Situationen, die weiter ihre normale Arbeit behindern. Beispielsweise durch die Anzahl der Nullteilungs, das Programm wird trotz der Tatsache arbeiten,, Wie viele Benutzer in dem Programm arbeiten, und wie viele Daten gemacht. Das Programm einfach beendet. und stell dir vor, wenn vor dem Anwenderprogramm Daten gebracht und ein paar Stunden Berechnungen ausgegeben. При таком аварийном закрытии программы все эти данные и расчеты пропадут. zustimmen – nicht sehr schön. Es kann sich auch um diese Situation treffen, wenn ein Programm versucht, zu öffnen ist in diesem Moment nicht-Datei zur Verfügung, oder fordern Sie mehr, als der verfügbare Speicher.

Diese Art von Situation müssen Programmierer versuchen, Anwendungen zu antizipieren und Design, so dass sie flexibel reagieren, statt der Notabschaltung. In meinem Lieblingsbuch Die C ++ Programmiersprache. Vorlesungen und Seminare автора С. Prata, die folgende Definition von Ausnahmen in C ++ gegeben:

Ausnahmen in C ++, c ++ Ausnahmen, Programmieren für Anfänger

Um Ihnen war es nicht schwierig, den Mechanismus der Ausnahmen in C ++ zu verstehen, sie betrachten das einfache Beispiel. Darin sehen wir den Fall, an einem gewissen Punkt, dass während der Programm-Berechnungen, может встретиться деление числа на 0. Наберите и скомпилируйте код, unter. Um sicherzustellen, dass, wie das Programm reagiert auf diese Situation, in den Zahlen füllen 0 Variable num2 (es wirkt Teiler Beispiel).

da die Variable war ist 3, Zyklus während, in einer normalen Situation, muss dreimal arbeiten. Bei jedem Schritt des Zyklus war dekrementiert über Dekrement. Aber wie wir gerade haben Wert 0 Variable num2, Das Programm findet nicht statt bis zum Ende der auch den ersten Schritt des Zyklus. Sie unterbrach.

Die folgende Auflistung, wir werden dieses Versäumnis korrigieren – fügen Sie ein paar Komponenten, zu helfen, ohne Unterbrechung des Programms auf diese Situation reagieren. Nämlich:

  • Block Versuchen oder Versuchen-Block (Versuch, Probe);
  • генератор исключения – Block werfen (behandeln, Lauf);
  • обработчик исключения, который его перехватывает -команда Fang (Fang, Fang)

Wie funktioniert eine Ausnahme? – Die Programmierregister in dem Code (in Versuchen-Block) spezifischen Zustand, dass, wenn die Variable num2 wird gleich 0, то в таком случае необходимо генерировать исключение в werfen. weiter, то что сгенерировал werfen, перехватывает Fang-Block (als Funktion des Parameters) und das Programm wird den Code ausführen, die in diesem Block eingetragen ist.

Beispiel:

im Detail verstehen. Linien 21-29 находится блок Versuchen. Es ist notwendig, den Code zu platzieren, was zu einer irreversiblen Fehlern führen kann. Vor einem arithmetischen Ausdruck Aufteilen der gegebenen Bedingungen: wenn num2 Es ist gleich 0, то пусть werfen erzeugt eine Reihe 999 (z.B). In dem Fall,, unmittelbar nach der Erzeugung von, дальнейшие команды в блоке Versuchen wird nicht mehr durchgeführt werden,, und die schiere Anzahl “fallen” в блок Fang (als Parameter). Als nächstes führen die, что указано в блоке Fang – in diesem Fall, dies ist eine Fehlermeldung:

cout << "Fehlernummer" << thr << " - Division durch 0!!!" << endl;

und das Programm wird die folgenden Befehle ausführen. In dem Fall,, если число num2 != 0, erzeugt es nichts und werfen Fang-Gerät funktioniert nicht.

Jetzt ansehen, wie man das Programm zu reagieren, если вы введете num2 Null. führen Sie das Programm.

Ausnahmen in C ++, c ++ Ausnahmen, Programmieren für Anfänger

Wie Sie sehen können, wo es könnte ein Fehler auf und die baldige Fertigstellung des Programms sein, wir sahen eine Nachricht Fehler №999 – Division durch 0!!! Programm “sprang” durch den Teilungsbetrieb auf 0 и выполнила Fang-Block.

Um Ihnen zu helfen besser zu verstehen,, как значение генерируемое werfen перехватывает Fang-Block, den Code in den Zeilen ersetzen 21 – 33 diese:

In diesem Beispiel, wenn num2 ist 0, werfen erzeugt einen String, und nicht die Anzahl. Reihe “Stürze” in Fang-Einheit und angezeigt.

Lassen Sie uns ein Beispiel an, wenn eine Ausnahme erzeugt wird Funktionen, teilt diese Zahl durch eine andere:

Um den Ausschluss funktionierte richtig, эту функцию надо вызвать в блоке Versuchen:

Fang die Anzahl der Abschnitte 99, eine Abteilung von 0 nicht gehalten werden.

Haupt-, müssen Sie die Ausnahmen in C ++ zu erinnern:

  • das Versuchen-Block (Wiederholungsblock) Sie müssen den Code platzieren, das könnte möglicherweise zu der Schließung des Notprogramm führen;
  • Исключение генерируется в блоке werfen. wenn werfen сработает программа автоматически приступит к выполнению команд Fang-Block, ignorieren den Rest des Codes in Versuchen-Block;
  • Der Trap-Block – Fang-Block, fängt die, что генерирует блок werfen. Он обязательно должен находиться под Versuchen-Block. Ничего не должно быть прописано между ними;
  • Fang-Gerät funktioniert nicht, wenn die Ausnahme wurden nicht generiert,. Das Programm einfach ignorieren.

Zur Unterstützung unserer Website – klicken Sie auf das Sparschwein. Sie werden gebeten, eine SMS senden. Summe – Ihre Wahl.

Newsletter neue Lektionen über die Programmierung:


Ich bin damit einverstanden, Nachrichten zu empfangen von purecodecpp.com auf meine E-Mail

Datum
Seite
Ausnahmen in C ++
Wertung
5

4 Gedanken zu "Ausnahmen in C ++

  1. Eigentlich, тема исключений в любом языке программированиядостаточно скользкая. Такой механизм вносит как свои преимущества, так и свои недостатки и скрытые опасности использования.
    Язык C++производный от C, и в это развитие включили исключения. Следующее развитие (2008-2009г.г.) языка Cэто язык Go. Из него исключения были разработчиками исключены и с очень обстоятельной опубликованной аргументацией почему они это сделали.
    Реюме: исключения в C++ нужно использовать, но только там, где они крайне необходимы, где без них нельзя обойтись. В остальных случаях лучше использовать традиционный возврат кода ошибки.

  2. Помогите люди добрые!!! Что неправильно с try у меня?

    1. А у вас до throw дело не доходитаварийное завершение наступает раньше, при делении на 0.

      И параметром catch должно быть что-то, наследуемое от класса исключений:

  3. Guten Tag. У вас ошибка в третьем листинге.

    cout << num1 / num2 << endl; //нужно вывести за пределы оператора if. иначе не работает.

Hinterlasse eine Antwort

Platz Code in Tags: <pre class="lang:c ++ dekodieren:true ">DEIN CODE</Vor>