try catch
throw
Ausnahmebehandlung ist ein wichtiger Teil der modernen
C++-Programmierung.
es soll komplizierte Strukturen bzw. Programmabstürze vermeiden.
Ein Beispiel:
#include <iostream>
#include <string>
#include <conio.h>
class Number_format
{
private:
std::string what_;
public:
Number_format() : what_("Typumwandlung misslungen") {}
Number_format(std::string s) : what_(s) {}
std::string getwhat(){ return what_; }
};
long string_to_long(std::string str)
{
char pos = 0;
if (str.empty()) throw Number_format();
if (str[0] == '-') ++pos;
if (str[pos] < 48 || str[pos] > 57) throw
Number_format();
return std::strtol(str.c_str(), NULL, 10);
}
int main()
{
std::string s;
try
{
std::cout << "Geben Sie eine Zahl ein: ";
std::cin >> s;
std::cout << string_to_long(s) <<
std::endl;
}
catch (Number_format &ex)
{
std::cerr << ex.getwhat() << std::endl;
}
getch();
}
Link: exceptions