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

hendlovanje exception-a .... upomoc :)

[es] :: C/C++ programiranje :: hendlovanje exception-a .... upomoc :)

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Free_Sex
Aleksandar
Beograd

Član broj: 9601
Poruke: 616
*.vdial.verat.net



Profil

icon hendlovanje exception-a .... upomoc :)29.08.2004. u 14:18 - pre 239 meseci
Uradio sam (skoro) ceo domaci kod Lasla. Ali me muce exceptioni. Recimo imam klasu koja predstavlja boju (r,g,b vrednosti). I potrebno je da ako se upise broj <0 ili > 255 za neku od vrednosti da ispisem gresku (ali ne tipa if(greska) cout <<...).

On to trazi da se resi pomocu klasa specijaln oprojektovanih za to.
Dakle da napravim jos jednu klasu, recimo G_boja_pogresna, koja treba da mi handluje exception.

Ali sve u svemu to ne radi.

Pokusao sam sa onom njegovom standardnom Greska klasom, koju posle nasledjujes ali VSC++ se ne zali, ali pukne program kada dodje do toga da treba da handluje exception.

Mozda neko "standardnije" resenje koje ce da koristi exception zaglavnje (klasu).

Treba mi samo da ispise gresku, nista vise.

A opet ne mogu da stavim ceo main u try i na kraju samo catch i da ispisem ... ali ako nista drugo ne uspem, uradicu tako.

 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.adsl.zonnet.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: hendlovanje exception-a .... upomoc :)29.08.2004. u 14:31 - pre 239 meseci
Postavi program ovde. Inače ti niko ne može pomoći.

f
 
Odgovor na temu

Free_Sex
Aleksandar
Beograd

Član broj: 9601
Poruke: 616
*.vdial.verat.net



Profil

icon Re: hendlovanje exception-a .... upomoc :)29.08.2004. u 14:39 - pre 239 meseci
Ma ceo program je komplikacija ziva. Ima dakle sledece klase :
tacka, boja, figura, krug, trougao, cetvorougao, mnogougao ...etc crtez, galerija.
Gde su ocigledno trougao i ostali izvedeni iz figure itd.

Ja cu evo dati kod samo za klasu boja :
Code:


// ovde treba napraviti jos jednu klasu koja ce da nehluje exception
class G_neispravna_boja {

}

class Boja {
    int r,g,b; // red green blue
    void postavi(int rr, int gg, int bb){
        Boja pom(rr,gg,bb);
        // ovo unosim prvo u pomocnu
        // da bi ga konstruktor proverio
        // i sad ako je ok onda samo upisati u pravu
        r= pom.r;
        g= pom.g;
        b= pom.b;
    }
public:

    Boja(int rr=0, int gg=0, int bb=0){
        
            if(rr < 0 || rr > 255 || gg < 0 || gg > 255 || bb < 0 || bb >255){
                // greska
                //cout<<"Uneseni podaci nisu u dozvoljenom opsegu!";
                throw G_neispravna_boja();
// e dakle ovde se poziva exception
            }
        
        // Ovde treba proveriti boju dali je u opsegu
        r=rr;
        g=gg;
        b=bb;
    }

    void postavi_r(int rr){
        postavi(rr,g,b);
    }

    void postavi_g(int gg){
        postavi(r,gg,b);
    }

    void postavi_b(int bb){
        postavi(r,g,bb);
    }

    void unesi(){
        int rr,gg,bb;
        cout<<"Unesi boju (r,g,b): ";
        cin>>rr>>gg>>bb;
        postavi(rr,gg,bb);
    }

    void pisi(){
        cout<<"boja: ["<<r<<","<<g<<","<<b<<"]\n";
    }
};


#endif


Ako neko ima neki primer toga. Na netu gde kod sam nesot nasao, to je po sistemu
main() {
try {
//do your work
} catch (...){

}

 
Odgovor na temu

Free_Sex
Aleksandar
Beograd

Član broj: 9601
Poruke: 616
*.vdial.verat.net



Profil

icon Re: hendlovanje exception-a .... upomoc :)29.08.2004. u 14:49 - pre 239 meseci
Pa ne znam ... kod Lasla je to zesce objasnjeno. Odmah sa nekim nasledjivanjima i namespaceovima. Tako da na kraju nista nisam skapirao ...
 
Odgovor na temu

Djuki
Djurdjevac Ivan
Pancevo

Član broj: 56
Poruke: 171
*.panet.co.yu

Jabber: djuki_mag@elitesecurity.org
ICQ: 66867882


Profil

icon Re: hendlovanje exception-a .... upomoc :)29.08.2004. u 22:12 - pre 239 meseci
Ja sam radio domaci kod Lasla i ovako sam resio Izuzetke:
Code:

// Greska.h
enum TipGreske {
   PRVA,
   DRUGA
};

class Greska {
    TipGreske tip;
public:
    Greska(TipGreske t=NEPOZNATO);
    void obradiGresku();
};

//Greska .cpp
#include "greska.h"

Greska::Greska (TipGreske t) {
    tip = t;
}

void Greska::obradiGresku() {
    if (tip != NEPOZNATO)
    {
        switch (tip)
        {
        case PRVA: {
            cout<<"\n*** Prekoracenje! Boja mora biti u opsegu od 0 d0 255. ***\n";
            break;
                   }
        case DRUGA: {
            cout<<"\n*** Niz mora imati duzinu vecu od nule ***\n";
            break;
                  }
        default: exit(2);
        }
    } else exit(1);
}



Uradi ovako i nemas frke ;) mada se ovo meze izvesti na bezbrij nacina. Pozdrav
 
Odgovor na temu

Djuki
Djurdjevac Ivan
Pancevo

Član broj: 56
Poruke: 171
*.panet.co.yu

Jabber: djuki_mag@elitesecurity.org
ICQ: 66867882


Profil

icon Re: hendlovanje exception-a .... upomoc :)29.08.2004. u 22:18 - pre 239 meseci
I da zaboravio sam kada zelis da prijavis izuzetak uradis sledece:
Code:

if (nestoNijeURedu) 
    throw Greska (PRVA);



a naravno u glavnom progamu koji koristi ove klase mora da bude try-catch blok.
Code:

void main () {
  try {
    // program 
   } catch (Greska g)
   {
      g.ObradiGresku();
   }
}
 
Odgovor na temu

[es] :: C/C++ programiranje :: hendlovanje exception-a .... upomoc :)

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

Postavi temu Odgovori

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