Site Tools


c_exception

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
c_exception [2013/04/09 11:46]
konovalov [пример решения exception в конструкторе]
c_exception [2013/04/09 13:38] (current)
konovalov [пример решения exception в конструкторе]
Line 326: Line 326:
   we deleted m_handle   we deleted m_handle
   Exception message: std::​bad_alloc   Exception message: std::​bad_alloc
 +
 +==== throw без параметров в коде ====
 +неперехватывается и следовательно вызывает terminate
 +    class MyClass{
 +    public:
 +        MyClass(int i){
 +            if(i < 50){
 +                cout << i << endl;
 +            }else{
 +                throw;
 +            }
 +        }
 +    };
 +    ​
 +    int main(int argc, char *argv[])
 +    {
 +        try{
 +            MyClass(41);​
 +            MyClass(98);​
 +            MyClass(111);​
 +        }catch(string x){
 +            cout << "catch string: " << x << endl;
 +        }catch(...){
 +            cout << "​always catch this and thow next" << endl;
 +        }
 +        cout << "​Normal end programm"​ << endl;
 +    }
 +вывод
 +  41
 +  terminate called without an active exception
 +  The program has unexpectedly finished.
 +==== throw без параметров при повторном вызове ====
 +"​перевозбуждает"​ предыдущий вызов (повторно,​ с теме же параметрами).
 +    class MyClass{
 +    public:
 +        MyClass(int i){
 +            if(i < 50){
 +                cout << i << endl;
 +            }else{
 +                throw string("​this info about error"​);​
 +            }
 +        }
 +    };
 +    ​
 +    int main(int argc, char *argv[])
 +    {
 +        try{
 +            MyClass(41);​
 +            MyClass(98);​
 +            MyClass(111);​
 +        }catch(string x){
 +            cout << "catch string: " << x << endl;
 +            try{
 +                throw;
 +            }catch(string strIn){
 +                cout << "again catch string throw, but now without parametrs"​ << endl;
 +            }catch(...){
 +                cout << "again catch throw" << endl;
 +            }
 +        }catch(...){
 +            cout << "​always catch this and thow next" << endl;
 +        }
 +        cout << "​Normal end programm"​ << endl;
 +    }
 +вывод: ​
 +  41
 +  catch string: this info about error
 +  again catch string throw, but now without parametrs
 +  Normal end programm
 ==== tmp ==== ==== tmp ====
 {{:​202.jpg?​nolink|}} {{:​202.jpg?​nolink|}}
c_exception.txt · Last modified: 2013/04/09 13:38 by konovalov

Page Tools