1 /*
2 *
exception.cpp
3 *
4 * Verwendung von Ausnahmen in C++.
5 *
6 * Autor: H.Drachenfels
7 * Erstellt am: 28.4.2023
8 */
9 #include <iostream>
10 #include <string>
11 #include <new>
12 #include <exception>
13
14 class MeineAusnahme : public std::exception { };
15
16 int main(int argc, char *argv[])
17 {
18 if (argc != 2)
19 {
20 std::cerr << "Aufruf: " << argv[0] << " Zahl\n";
21 return EXIT_FAILURE;
22 }
23
24 try
25 {
26 size_t n = std::stoul(argv[1]);
27 if (n < 0xfffful)
28 {
29 throw MeineAusnahme(); // Stil: ohne new
30 }
31
32 int *p = new int[n];
33 p[n - 1] = 0;
34 }
35 catch (std::bad_alloc& e) // Stil: per Referenz fangen
36 {
37 std::cerr << e.what() << '\n';
38 }
39 catch (...)
40 {
41 std::cerr << "Unbekannte Ausnahme\n";
42 }
43 }
44