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

Praktyczne zastosowanie return do zwracania błędów

Ostatnio zmodyfikowano 2016-10-13 14:20
Autor Wiadomość
blahax2g
Temat założony przez niniejszego użytkownika
Praktyczne zastosowanie return do zwracania błędów
» 2016-10-11 20:10:18
Witam,
Czytałem ostatnio kurs o słowie kluczowym "return" i w większości programów, na jego końcu wpisujemy
return 0;
 co miałoby zwrócić do IDE komunikat
returned 0
.
Czy mogę sobie np używać w dowolnym miejscu programu innych "returnów" żeby zwracać sobie do IDE błędy? Czyli np.
return 212;
 i wtedy jeśli będę wiedział za co odpowiada błąd 212 to będę mógł go zlokalizować i naprawić?
Sprawdziłem jeszcze i z tego co widzę, to return zwraca wartości od 0 do 255, mogą być jeszcze jakieś inne możliwości?
Pozdrawiam, z góry dzięki.
P-152453
pekfos
» 2016-10-11 21:06:56
Czy mogę sobie np używać w dowolnym miejscu programu innych "returnów" żeby zwracać sobie do IDE błędy?
W main(). W pozostałych funkcjach możesz wywołać exit(n) dla zakończenia programu z kodem n, jednak w C++ tej funkcji nie należy używać bez zachowania ostrożności.
P-152459
RazzorFlame
» 2016-10-13 14:20:55
Sprawdziłem jeszcze i z tego co widzę, to return zwraca wartości od 0 do 255, mogą być jeszcze jakieś inne możliwości?
Return powoduje wyjście z funkcji. Zwykle wyjście z funkcji main powoduje zakończenie programu i dopiero po tym Twoje IDE pokazuje co zostało zwrócone przez aplikacje.
Return w kontekście zwracania błędów jest przydatny głównie w funkcji main, w innych przypadkach bardziej bym się skusił na rzucanie wyjątków
C/C++
class CholeroNieDzielPrzezZero
{
public:
    std::string get() const { return "Pamietaj cholero - nie dziel przez zero!"; }
};

float dziel( float a, float b )
{
    if( b == 0 )
         throw CholeroNieDzielPrzezZero();
   
    return a / b;
}

int main()
{
    float liczba = 30;
    float dzielnik = 0; // dzielnik zerowy
   
    try {
        float wynik = dziel( liczba, dzielnik );
        std::cout << "Wynik z dzielenia: " << wynik << std::endl;
    }
    catch( CholeroNieDzielPrzezZero & e )
    {
        std::cout << "ERROR, ERROR: " << e.get() << std::endl;
       
        return 1; // nieprawidlowy wynik dzialania
    }
   
    return 0; // prawidlowy wynik
}
Jak widzisz w pierwszym przypadku return posłużyło jako zwrócenie tekstu, który wyświetlamy na ekranie
W drugim przypadku (w funkcji dziel) return zwraca wartość dzielenia,
W mainie standardowo - jesli wszystko poszlo pomyslnie to zwracamy zero jesli nie to 1.
try { } catch() {} nie jest trudne do zrozumienienia jednak z jakiegoś powodu zwykle w kursach albo tego nie ma albo jest gdzieś na końcu.

return to wyjście z funkcji oraz zwrócenie przez nią konkretnej wartości. W przypadku main zwykle return zamyka program i zwraca wynik pomyślnego wykonania (0) lub w innym przypadku dowolnej wartości z zakresu około -2 miliardy do 2 miliardów.
P-152521
« 1 »
  Strona 1 z 1