Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

try...catch

[es] :: C/C++ programiranje :: try...catch

[ Pregleda: 4194 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

doomed
NS/PO

Član broj: 736
Poruke: 180
*.ptt.yu



Profil

icon try...catch27.09.2002. u 17:20 - pre 233 meseci
elem, evo jedno parce koda na koje se kompajler buni:

UINT MainFrame::Crtaj()
{
CWnd * wnd = AfxGetMainWindow();

try{
CClientDC clientDC( wnd);
}catch(...)
{
AfxMessageBox("Ne mogu da napravim klijent DC");
return 0;
}

......
......
......
clientDC.BitBlt(.........);
.....
.....
}

kompajler se buni kod onog poziva BitBlt-a...'clientDC' : undeclared identifier
Lepo pise u MSDN-u da konstruktor u slucaju greske dize exception (CResourceException)....
Samo nije mi nije bas najsigurniji sta ga ovde buni....
Da li je sledece moje razmisljanje OK?
Kompajler smatra da clientDC, posto je u okviru try..catch bloka, nije u scope-u ostatka f-je pa ga zato i ne vidi....Zbog toga, u deklaraciji same f-je Crtaj() bi trebalo bi da stoji throw ali bez try...catch bloka u samoj f-ji, pa ako konstruktor izbaci prekid onda ce izbaciti prekidi moja f-ja.
Ne znam da li sam dovoljno dobro opisao problem ( i moje rezonovanje).....
Ako treba onda nema potrebe
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..ndg-pm4-1.dialup.nethere.net



+6 Profil

icon Re: try...catch27.09.2002. u 17:36 - pre 233 meseci
Rezonovanje ti je dobro u smislu da je clientDC deklarisan u opsegu try bloka i da je "nevidljiv" van njega.

Međutim, nema potrebe da stavljaš throw u deklaraciju funkcije da bi prekid otišao "roditeljskoj" funkciji. To je obavezno u Javi, a ne u C++u, mada nije loše da se i to uradi, čisto zbog bolje dokumentovanosti koda.

I još nešto: pošto konstruktor CClientDC može da izbaci jedino CResourceException, onda u catch bloku treba hvatati samo ovaj tip.
 
Odgovor na temu

doomed
NS/PO

Član broj: 736
Poruke: 180
*.ptt.yu



Profil

icon Re: try...catch27.09.2002. u 21:48 - pre 233 meseci
da ali ako ne stavim throw u roditeljsku f-ju kako da znam da li je konstrukcija objekta prosla kako valja......sa try...catch varijantom kompajler me ne shljivi.......bilo da hvatam neki pojedini ili sve izuzetke....
Izgleda da ipak mora da se ubaci jedno magicno throw.....
Ako treba onda nema potrebe
 
Odgovor na temu

doomed
NS/PO

Član broj: 736
Poruke: 180
*.ptt.yu



Profil

icon Re: try...catch27.09.2002. u 21:50 - pre 233 meseci
i opet ja .......Mozda nije bas za ovu temu ali mi treba neko ko zna dobro MFC...cisto zbog nekih saveta... :) ima li takvih?.......
Ako treba onda nema potrebe
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..g-c5300-1.dialup.nethere.net



+6 Profil

icon Re: try...catch28.09.2002. u 02:21 - pre 233 meseci
Citat:
doomed:
da ali ako ne stavim throw u roditeljsku f-ju kako da znam da li je konstrukcija objekta prosla kako valja......sa try...catch varijantom kompajler me ne shljivi.......bilo da hvatam neki pojedini ili sve izuzetke....
Izgleda da ipak mora da se ubaci jedno magicno throw.....


Izvini, ali ne kapiram te ama ništa. Kakvo throw u roditeljskoj funkciji? U njoj staviš try... catch na mestu gde pozivaš ovu tvoju funkciju i nema nikakvih problema. Throw ti ne treba nigde. Znaš li uopšte čemu služi throw?
 
Odgovor na temu

doomed
NS/PO

Član broj: 736
Poruke: 180
*.ptt.yu



Profil

icon Re: try...catch28.09.2002. u 02:43 - pre 233 meseci
naravno da znam...but...'ebi ga.....naisla mi je zuta minuta...posto radim jedan veliki projekat puna mi je glava svega i svacega...i samo sam tako bupnuo onaj try catch pa kada je kompajler izbacio onu poruku totalno me je zbunio..........sve je dobro kada se dobro zavrsi a verovatno jos bolje kada se covek naspava
Ako treba onda nema potrebe
 
Odgovor na temu

[es] :: C/C++ programiranje :: try...catch

[ Pregleda: 4194 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.