/*
 * exception.cpp
 *
 * Verwendung von Ausnahmen in C++.
 * 
 * Autor: H.Drachenfels
 * Erstellt am: 28.4.2023
 */
#include <iostream>
#include <string>
#include <new>
#include <exception>

class MeineAusnahme : public std::exception { };

int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        std::cerr << "Aufruf: " << argv[0] << " Zahl\n";
        return EXIT_FAILURE;
    }

    try
    {
        size_t n = std::stoul(argv[1]);
        if (n < 0xfffful)
        {
            throw MeineAusnahme(); // Stil: ohne new
        }

        int *p = new int[n];
        p[n - 1] = 0;
    }
    catch (std::bad_alloc& e) // Stil: per Referenz fangen
    {
        std::cerr << e.what() << '\n';
    }
    catch (...)
    {
        std::cerr << "Unbekannte Ausnahme\n";
    }
}

