Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wyjątek dla jeszcze nieistniejącego obiektu

Ostatnio zmodyfikowano 2012-10-05 12:59
Autor Wiadomość
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ł


C/C++
vector < KLASA > OBJ;

while( OBJ.size() != 1 )
{
    OBJ[ 0 ].result();
    OBJ.push_back( OBJ() );
}
P-66016
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:
C/C++
vector < KLASA > OBJ;

while( OBJ.size() != 1 )
{
    try
    {
        OBJ[ 0 ].result();
    }
    catch(...) //tutaj też można wstawić typ wyjątku zeby precyzyjniej okreslic
    {
        //jezeli bedzie catch(...)to te instrukcje będą się wykonywać przy każdym wyjątku jaki będzie rzucony w bloku try
    }
    OBJ.push_back( OBJ() );
}
P-66017
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
P-66018
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

C/C++
int x;
try {
    x = obiekt[ 0 ].result();
}
catch(...)
{
    x = 0;
}
P-66019
diego997
Temat założony przez niniejszego użytkownika
» 2012-10-04 01:05:03
Nie dziala wywala error
P-66022
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;
P-66028
diego997
Temat założony przez niniejszego użytkownika
» 2012-10-04 16:47:22
Aha nie wiedzialem ;p



vector subscript out of range
P-66035
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
P-66036
« 1 » 2
  Strona 1 z 2 Następna strona