Wyjątek dla jeszcze nieistniejącego obiektu
Ostatnio zmodyfikowano 2012-10-05 12:59
diego997 Temat założony przez niniejszego użytkownika |
Wyjątek dla jeszcze nieistniejącego obiektu » 2012-10-03 22:54:27 Czy mozna jakos obsłużyć poniższy wyjątek ? Coś zrobić zeby program zadziałał tak jak jest poniżej żeby błędu nie wywalił vector < KLASA > OBJ;
while( OBJ.size() != 1 ) { OBJ[ 0 ].result(); OBJ.push_back( OBJ() ); }
|
|
Admixior |
» 2012-10-03 22:58:39 Oczywiście można obsłużyć wyjątek umieszczając go w blok try, ale czy to jest naprawdę konieczna? Wyjątek się pokazuje gdyż próbujesz się odwołać do obiektu numer 0 z wektora, ale ten obiekt jeszcze nie istniej. Wystarczy po prostu odwoływać się do istniejących obiektów (np. konstruować tak pętle żeby się wykonywały dopóki działają na istniejących obiektach). //edit: vector < KLASA > OBJ;
while( OBJ.size() != 1 ) { try { OBJ[ 0 ].result(); } catch(...) { } OBJ.push_back( OBJ() ); }
|
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-10-03 23:05:10 Wiesz ja podałem prosty przykład o co mi chodzi. Ja muszę coś zrobić żeby to zadziałało np zeby dla nieistniejącego obiektu metoda result() zwróciła wartośc 0 domyslna wartosc. Coś w tym stylu |
|
Admixior |
» 2012-10-03 23:09:46 np zeby dla nieistniejącego obiektu metoda result() zwróciła wartośc 0 domyslna wartosc. |
to jest nie możliwe gdyż jak zostanie rzucony wyjątek to kaput, wszystko się przerywa i skacze do bloku catch albo wykrzacza program. możesz zrobić np tak int x; try { x = obiekt[ 0 ].result(); } catch(...) { x = 0; }
|
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-10-04 01:05:03 Nie dziala wywala error |
|
Admixior |
» 2012-10-04 16:10:49 A pokażesz jaki błąd? Wróżki mają kryzys i ceny u nich są za duże; |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-10-04 16:47:22 Aha nie wiedzialem ;p vector subscript out of range
|
|
Admixior |
» 2012-10-04 16:50:17 Czyli chyba nadal to samo. Jesteś pewien że wszystkie instrukcje które mają odwołanie do nieistniejącego elementu umieściłeś w catch()? //Jak tak to zapodaj kawałek kodu |
|
« 1 » 2 |