[Visual C++]Exceptions. Dwa pytania


(Masterslynx) #1

Jak na górze, ja w sprawie wyjątków;p

Pierwsze. Używając bloku try i catch, wewnątrz catch "Exception ^e" (o tym dlaczego precyzuje - później) mam jakiś tam "cout" który wyrzuca po prostu całe "e" jako string na ekran. Dajmy na to, że wywołałem błąd dzielenia przez zero. I teraz dostał niezłą rozpiskę. co, gdzie jak, w którym pliku, jakim wierszu... można to skrócić ? Ale oczywiście nie w żaden "ręczny" sposób. Wystarczyło by same "divisionByZero Exception" i tyle. Nikt nie musi wiedzieć, że to jest zapisane w tej linii i w tym pliku ;p (tak wiem, to dla programisty, ale mi to nie potrzebne, znam swoje błędy;p). Więc jakaś funkcja czy coś, by wyrzucało jedynie nagłówek błędu, a nie całą rozpiskę.

I coś jeszcze, czy to "Exception ^e" w catch wyłapie wszystkie błędy ? niby to pod visuala ale widziałem dużo różnych opcji. Chociaż by "SecurityException *se" lub "IOException *ioe". To są dwa które znalazłem. Nie wiem czy jest tego więcej. Czy muszę wpisywać zawsze do tych 3 typów błędów ? Widać, że to różne typy, teoretycznie można przewidzieć, który ewentualnie może się "zdarzyć". Więc pytanie, czy podstawowe Exception ^e wystarczy do obsługi wszystkich Windowsowych błędów (w każdej automatycznie generowanej funkcji zdarzeń jest tylko proste Exception) czy może trzeba się bardziej rozpisać ?

To dość pilne, bo wchodzę w niezłe "krzaki" i tu każdy element kodu jest podejrzany, więc wszystko leży w "try catch" ;p


(Fiołek) #2

1) e->GetType() zwraca nazwę typu obiektu, wystarczy wypisać Name.

2) Wszystkie wyjątki .NET muszą dziedziczyć po Exception więc tak, to łapie wszystkie typy wyjątkó.


(Masterslynx) #3

Ok, dzięki. Pierwsze się zgadza, getType() zwraca sam nagłówek błędu. A co do drugiego to na razie nie sprawdzę, ufam na słowo ;p Jak coś to wejdź jeszcze do drugiego tematu, tam też problem, tylko, że inny;p


(somekind) #4

Po pierwsze podstawową informację o wyjątku daje właściwość Exception.Message.

Po drugie czasem warto stosować wielokrotny catch, żeby w zależności od typu wyjątku różnie reagować.

Po trzecie: http://msdn.microsoft.com/en-us/library ... ption.aspx