Heim > Backend-Entwicklung > C++ > Wie gehe ich mit Ausnahmen in C++-Funktionen um?

Wie gehe ich mit Ausnahmen in C++-Funktionen um?

WBOY
Freigeben: 2024-04-23 15:24:01
Original
908 Leute haben es durchsucht

In C++ werden Ausnahmen über die Try-Catch-Anweisung behandelt: Der Code im Try-Block kann eine Ausnahme auslösen. Der Catch-Block fängt Standardausnahmen oder benutzerdefinierte Ausnahmen ab. Das Schlüsselwort noexclusive gibt an, dass die Funktion keine Ausnahmen zur Optimierung auslöst.

C++ 函数中如何处理异常?

Wie gehe ich mit Ausnahmen in C++-Funktionen um?

In C++ werden Ausnahmen durch die try-catch-Anweisung behandelt, die drei Hauptteile umfasst: try-catch 语句处理,包括三个主要部分:

try {
  // 代码块,可能抛出异常
}
catch (const std::exception& e) {
  // 捕获标准异常
}
catch (const MyCustomException& e) {
  // 捕获自定义异常
}
Nach dem Login kopieren

实战案例:

假设我们有一个函数 divide,它计算两个数的商,但当分母为 0 时抛出异常:

int divide(int num, int denom) {
  try {
    if (denom == 0) {
      throw std::runtime_error("除数不能为 0");
    }
    return num / denom;
  }
  catch (const std::exception& e) {
    std::cout << "错误: " << e.what() << std::endl;
  }
}
Nach dem Login kopieren

在主函数中,我们可以调用 divide 函数并捕获异常:

int main() {
  try {
    int dividend = 10;
    int divisor = 0;
    int result = divide(dividend, divisor);
    std::cout << dividend << " / " << divisor << " = " << result << std::endl;
  }
  catch (const std::runtime_error& e) {
    std::cout << e.what() << std::endl;
  }
}
Nach dem Login kopieren

输出:

错误: 除数不能为 0
Nach dem Login kopieren

注意:

  • 函数中也可以抛出自定义异常,通过创建自定义异常类并继承 std::exception
  • 使用 noexceptrrreee
Praktischer Fall: 🎜🎜🎜Angenommen, wir haben eine Funktion divide code > berechnet es den Quotienten zweier Zahlen, löst jedoch eine Ausnahme aus, wenn der Nenner 0 ist: 🎜rrreee🎜In der Hauptfunktion können wir die Funktion <code>divide aufrufen und die Ausnahme abfangen: 🎜rrreee🎜 Ausgabe: 🎜 rrreee🎜🎜Hinweis: 🎜🎜
  • Benutzerdefinierte Ausnahmen können auch in Funktionen ausgelöst werden, indem eine benutzerdefinierte Ausnahmeklasse erstellt und std::Exception geerbt wird. 🎜
  • Verwenden Sie das Schlüsselwort noexclusive, um zu deklarieren, dass die Funktion keine Ausnahmen zur Optimierung auslöst. 🎜🎜

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Ausnahmen in C++-Funktionen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage