Ausnahme außerhalb des gültigen Bereichs in C++ auslösen

Aditya Raj 12 Oktober 2023
  1. Ausnahme außerhalb des gültigen Bereichs in C++ auslösen
  2. Fehler beim Auslösen einer Ausnahme außerhalb des gültigen Bereichs in C++
Ausnahme außerhalb des gültigen Bereichs in C++ auslösen

In C++ können wir Ausnahmen mit try-catch-Blöcken behandeln. Wir können eine Ausnahme auch explizit mit der Anweisung throw auslösen.

In diesem Artikel wird erläutert, wie Sie in C++ eine Ausnahme außerhalb des gültigen Bereichs auslösen.

Ausnahme außerhalb des gültigen Bereichs in C++ auslösen

Um in C++ eine Ausnahme außerhalb des gültigen Bereichs auszulösen, können Sie ein Ausnahmeobjekt erstellen. Dazu können Sie den Konstruktor out_of_range() verwenden.

Der Konstruktor out_of_range() ist in der Standard-C++-Bibliothek definiert. Es nimmt ein Zeichenfolgenobjekt als Eingabeargument und gibt eine Ausnahme außerhalb des gültigen Bereichs zurück.

Sie können die Ausnahme mit der Anweisung throw auslösen, wie im folgenden Beispiel gezeigt.

#include <iostream>

int main() {
  int number = 100;
  if (number > 50) {
    throw std::out_of_range("I am an exception.");
  }
  return 0;
}

Ausgang:

terminate called after throwing an instance of 'std::out_of_range'
  what():  I am an exception.
Aborted

Hier haben wir zunächst eine Variable namens number erstellt. Dann haben wir geprüft, ob der Wert in der Zahl grösser als 50 ist.

Wenn ja, haben wir eine Ausnahme außerhalb des Bereichs ausgelöst, die in der Standard-C++-Bibliothek definiert ist.

Sie können die Out-of-Range-Ausnahme auch mit try-catch-Blöcken behandeln. Wir werfen die Ausnahme in den try-Block.

Wir werden die Out-of-Range-Ausnahme abfangen und im catch-Block ausgeben, dass wir die Ausnahme behandelt haben. Dies können Sie im folgenden Beispiel beobachten.

#include <iostream>

int main() {
  int number = 100;
  try {
    if (number > 50) {
      throw std::out_of_range("I am an exception.");
    }
  } catch (std::out_of_range) {
    std::cout << "I am here. Exception caught and handled.";
  }
  return 0;
}

Ausgang:

I am here. Exception caught and handled.

Die obige Ausgabe zeigt, dass das Programm nach der Behandlung der Bereichsüberschreitungs-Ausnahme normal beendet wurde. Andererseits wurde das vorherige Programm abgebrochen, weil wir die Ausnahme nicht behandelt haben.

Fehler beim Auslösen einer Ausnahme außerhalb des gültigen Bereichs in C++

Es ist manchmal möglich, ein Programm zu schreiben, um eine außerhalb des Bereichs liegende Ausnahme in C++ auszulösen, wie unten gezeigt.

#include <iostream>

int main() {
  int number = 100;
  try {
    if (number > 50) {
      throw std::out_of_range;
    }
  } catch (std::out_of_range) {
    std::cout << "I am here. Exception caught and handled.";
  }
  return 0;
}

Wenn wir den obigen Code ausführen, wird das Programm mit dem folgenden Ausführungstrace auf einen Fehler stoßen.

/tmp/EG06BKsTcd.cpp: In function 'int main()':
/tmp/EG06BKsTcd.cpp:8:36: error: expected primary-expression before ';' token
    8 |             throw std::out_of_range;
      |                                    ^

Der Fehler tritt auf, weil wir statt eines Out-of-Range-Ausnahmeobjekts std::out_of_range geworfen haben. Der Konstruktor std::out_of_range ist eine Typdefinition, die verwendet wird, um eine Ausnahme außerhalb des gültigen Bereichs zu erstellen.

Daher können Sie es nicht mit einer throw-Anweisung werfen. Um in C++ eine Ausnahme außerhalb des Bereichs auszulösen, müssen Sie eine Ausnahme außerhalb des Bereichs erstellen, indem Sie einen String als Eingabeargument an den Konstruktor std::out_of_range() übergeben; Nur dann können Sie die Out-of-Range-Ausnahme in C++ erfolgreich auslösen.

Autor: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

Verwandter Artikel - C++ Exception