Auflösen von out of range-Problemen
-
Die Art der Exception ist abhängig vom auftretenden Ausnahmefall. Bestimmte Container können zum Beispiel ebenfalls eine Exception vom Typ out_of_range werfen. Andere Arten von Exceptions wären beispielsweise bad_alloc (Speicherreservierungsfehler), bad_cast (Typumwandlungsfehler), logic_error (logischer Fehler), uvm.
-
Aber werfen den replace und erase beide ein:
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::eraseOder steht bei replace dann:
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::replace???
-
Ja what() sagt natürlich aus WAS passiert ist (warum sollte da bei replace bitteschön erase stehen?). Aber beides ist eine std::out_of_range Exception.
-
[quote="HumeSikkins"]Nö. Ich habe vorher extra in den Standard geschaut und da steht (21.3.5.5)
Requires: pos <= size()
Throws: out_of_range if pos > size()Interessant. Weshalb ist das so?
-
Weil irgendwer vom Standardisierungskomitee der Meinung war, so eine klare Definition ist besser als wenn sie "undefined behaviour" liefern würden