WArum gibts keine Standard Acces Violation Exception



  • kann mir jemand sagen warum es im C++ Standard keine Exception Klasse
    für eine Acces Violation gibt?
    denn dies ist nach meine Erfahrungen die häufigste Exception.

    Mff Shade37337

    //EDIT: Titel geändert



  • Eine Access-Violation stellt das Betriebssystem fest, nicht die C++-Laufzeitumgebung. Daher könnte eine solche Exception einfach nicht geworfen werden.



  • Meistens wird es ein Zugriff auf Adress Null sein, oder? Was spricht also dagegen, den Pointer vorher auf null abzufragen? Dann ist schon mal eine Exception weniger wahrscheinlich und diese Exception die du vermisst, ist garnicht mehr nötig. Aber du kannst ja selber eine werfen, falls du das brauchst:

    void foo(MyClass *p)
    {
        if(p == NULL)
           throw std::runtime_error("p ist null.");
           // vielleicht wäre std::invalid_argument auch nicht falsch?
    }
    

Anmelden zum Antworten