• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ - jak dziedziczyć po std::runtime_error

+1 głos
459 wizyt
pytanie zadane 23 września 2020 w C i C++ przez aram100 Użytkownik (500 p.)

Hej

Jak napisać własny wyjątek dziedziczący po std::runtime_error, tak aby móc go później rzucić tak:

throw MyRuntimeException("Moja wiadomosc wyjatku")

W sensie aby można go było rzucać z różnymi wiadomościami

Narazie mam taki kod, jak go dokończyć? Próbowałem dodać zwykł,y publiczny konstruktor (z wiadomością typu std::string), ale nie działa

 

class MyRuntimeException : public std::runtime_error
{
    std::string exceptionMessage;
 
public:
    const char* what() const noexcept override {
        return exceptionMessage.c_str();
    }
};

 

1 odpowiedź

+3 głosów
odpowiedź 23 września 2020 przez tangarr Mędrzec (155,140 p.)

Klasa std::runtime_error nie posiada konstruktora domyślnego. Podejrzewam, że nie zainicjowałeś go prawidłowo ze swojego konstruktora.
 

class MyRuntimeException : public std::runtime_error
{
    std::string exceptionMessage;
  
public:
    MyRuntimeException(const std::string &message) : 
        std::runtime_error(""),
        exceptionMessage(message)
    {
    }
    const char* what() const noexcept override {
        return exceptionMessage.c_str();
    }
};

 

Podobne pytania

+1 głos
1 odpowiedź 529 wizyt
pytanie zadane 20 lutego 2016 w C i C++ przez JAKUBW Nałogowiec (33,470 p.)
+1 głos
0 odpowiedzi 311 wizyt
pytanie zadane 21 marca 2023 w C# przez Pawel1995 Gaduła (3,810 p.)
0 głosów
0 odpowiedzi 721 wizyt

93,600 zapytań

142,524 odpowiedzi

322,993 komentarzy

63,085 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...