Rzucanie wyjątków
Ostatnio zmodyfikowano 2015-03-25 21:27
dek12 Temat założony przez niniejszego użytkownika |
Rzucanie wyjątków » 2015-03-24 11:44:25 Cześć mam pytanie, jak lepiej obługiwać wyjątki. tak: class SuperWyjatek { };
...
double DziwnaFunkcja( int a ) { if( a == 666 ) throw SuperWyjatek(); return a; }
...
int main() { try { DziwnaFunkcja( 666 ) } catch( SuperWyjatek ) { cerr << "SUPER WYJATEK"; } return 0; }
czy może tak: class SuperWyjatek { public: SuperWyjatek() { cerr << "SUPER WYJATEK"; } };
...
double DziwnaFunkcja( int a ) { if( a == 666 ) throw SuperWyjatek(); return a; }
...
int main() { try { DziwnaFunkcja( 666 ) } catch( SuperWyjatek ) { } return 0; }
|
|
maly |
» 2015-03-24 12:17:45 |
|
dek12 Temat założony przez niniejszego użytkownika |
» 2015-03-24 15:36:41 Czyli lepiej utworzyć sobie jedną klasę np Wyjątki w niej trzymać metody, dla poszczególnych wyjątków i w zależności od wyjątku w catch wywoływać odpowiednią metodę? |
|
Monika90 |
» 2015-03-24 15:58:00 Jeżeli tobie chodzi o to, czy to dobry pomysł żeby konstruktor wyjątku drukował komunikat o błędzie, to nie, to nie jest dobry pomysł. |
|
dek12 Temat założony przez niniejszego użytkownika |
» 2015-03-24 16:03:15 Pani Moniko, a może Pani coś więcej napisać o tym? |
|
Monika90 |
» 2015-03-24 16:23:36 Rolą wyjątków jest przeniesienie informacji o tym że błąd wystąpił (i jaki to był błąd) z jednego miejsca w programie do drugiego. To znaczy, z miejsca w którym błąd został wykryty do miejsca które wie jak na ten błąd zareagować. Jeżeli umieścisz drukowanie komunikatu w konstruktorze klasy wyjątku, to ten komunikat będzie drukowany zawsze, nawet wtedy kiedy nie będzie to właściwą reakcją na dany błąd (bo na przykład właściwą reakcją będzie wyświetlenie messageboksa). |
|
dek12 Temat założony przez niniejszego użytkownika |
» 2015-03-24 20:00:39 Dziękuje, to czy dobrym rozwiązaniem jest stworzenie swojej klasy, która będzie przechowywała różne wyjątki, np: myExc { string ZwrociJakisStringZInfo() {...} int ZwrociJakisInt() {...} };
Potem,gdzieś robimy i tam gdzie potrzebujemy jednej z info z klasy catch( myExc e ) { cout << e.ZwrociJakisStringZInfo() }
dobrze to rozumiem? |
|
Brunon3 |
» 2015-03-24 20:03:06 Jeżeli ja dobrze rozumiem, to Ty źle rozumiesz.
-BD. |
|
« 1 » 2 |