[ cbb @ 07.05.2009. 02:47 ] @
Rečeno mi je da bi kod exception handling-a trebalo da za throw stavljam objekat posebne klase grešaka ("throw Izuzetak();"), umesto npr. "throw 20;". Nisam uspeo da shvatim koja je prednost toga. :) |
[ cbb @ 07.05.2009. 02:47 ] @
[ Goran Arandjelovic @ 07.05.2009. 03:11 ] @
Ako ti je neophodno malo više informacija u vezi nepredviđene situacije, bacićeš složeniji objekat koji ih objedinjuje.
Nema tu pravila, ako ti je dovoljno da baciš jedan ceo broj samo, onda je i to sasvim ok. Doduše, praksa je da imaš određenu hijerarhiju klasa izuzetaka i da bacaš objekat neke od tih klasa kako bi lepo mogao da iskoristiš eventualno polimorfno ponašanje i da postigneš veću granularnost. Ako nije baš jasno opet, daću ti primer... [ Mihajlo Cvetanović @ 07.05.2009. 09:47 ] @
Citat: cbb: Nisam uspeo da shvatim koja je prednost toga. :) Recimo da ti se situacija sa izuzecima zakomplikuje, pa ti trebaju dodatne informacije za neki izuzetak. Treba ti recimo koja je funkcija pozvana i sa kojim parametrima. To ćeš lako pribeležiti ako je izuzetak objekat. [ cbb @ 07.05.2009. 12:58 ] @
Ok, da, kapiram. Iz istog razloga iz kog je osoba tipa klasa, a ne ceo broj. Greška može biti složeno opisana.
Hvala. Problem je bio u tome što je meni dato neko polovično objašnjenje o tome kako ne želimo svaki put kad bacamo izuzetak "pisati "nešto" ". [ Mihajlo Cvetanović @ 07.05.2009. 13:35 ] @
Ni meni to objašnjenje ne govori mnogo, ali možda se odnosi na to da si u slučaju sa celobrojnim izuzetkom obavezan da interpretiraš taj broj svuda gde hvataš izuzetak. U slučaju sa klasama obično se interpretacija implementira u samoj klasi, kao što std::exception ima članicu char* what().
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|