ďťż

Ładny brzuch

W najnowszym ekspercie w kursie c++ była obsługa wyjątków.
Nie wiem jak skompilować ten kod w dev c++ lub visualu?

#include <iostream> #include <exception> using namespace std; int main() {        try        {         int dziesiec = 10;         int zero = 0;         int dzielimy = dziesiec/zero;        }        catch(Exception& exc)        {         cout << "Wystapila sytuacja wyjatkowa: " <<  exc.Message.c_str() << endl;        }                      return 0; }



Dev-C++:
Robisz nowy projekt, do pliku main.cpp wrzucasz ten kod i kompilujesz. O co ci chodzi? Jezeli tego nie umiesz, to tym bardziej nie wiem ,po co chcesz brac sie za obsluge wyjatkow...

O to chodzi: screen

Teraz zrobiłem tak:#include <iostream> #include <exception> using namespace std; int main() {       try       {        int dziesiec = 10;        int zero = 0;        int dzielimy = dziesiec/zero;       }       catch(exception& exc)       {        cout << "Wystapila sytuacja wyjatkowa: " <<  exc.Message.c_str() << endl;       }                   return 0; } i w tej linijce jaki błąd:
cout << "Wystapila sytuacja wyjatkowa: " <<  exc.Message.c_str() << endl;
16 E:\Moje Dokumenty\exc\main.cpp 'class std::exception' has no member named 'Message'

i jeszcze taki błąd:
E:\Moje Dokumenty\exc\main.cpp In function `int main()':




(...)

Co Ty mi wogóle dałeś? Chodziło mi o DEV c++ albo Visual c++, a nie Buildera. W buidierze to źrudła mam na krążku Eksperta, które działają. Chyba że wiesz jak włączyć obsługę wyjątków w DEV lub Visualu jeżeli wogóle jest wyłączona.

Mam prośbę możecie mi dać jakiś przykład obsługi wyjątków który działa na DEV lub Visul c++?

A czy przypadkiem może....
... ktoś tu ma jakiekolwiek pojęcie o wyjątkach z Biblioteki Standardowej?!?

Ehh... mówiąc wprost:

'class std::exception' has no member named 'Message'
W klasie std::exception jest funkcja what(), która zwraca const char* wskazujący na komunikat o błędzie. Poprawny kod:
std::cout << "Wystapila sytuacja wyjatkowa: " << exc.what() << std::endl;

BTW. po co do cout używać funkcji c_str(), skoro strumienie z Biblioteki Standardowej obsługują klasę std::string ?
Pozdrawiam.
CHAK DE PLANET.

//EDIT
A tak w ogóle, to próba obsłużenia wyjątkami dzielenia przez zero się tu nie sprawdzi. Zależnie od tego, czy tzw. wyjątki zmiennoprzecinkowe są wyłączone czy też włączone, program albo nic sobie nie zrobi z dzielenia przez zero, albo zostanie wywłaszczony przez system operacyjny. Niestety, obsługa sytuacji wyjątkowych w C++ nie obsługuje wyjątków sprzętowych czy systemu operacyjnego.

[to drugie robi akurat tzw. Structured Exception Handling w C, ale po pierwsze to działa tylko w Visual C++, po drugie - nie da się tego mieszać z wyjątkami w C++, a po trzecie - to jest przeznaczone dla C :D]

//EDIT 2
Eee... serio był taki przykład w Ekspercie?
[spadłem z krzesła]
Chylę czoła przed Redakcją; po prostu nie mam żadnych pytań.

//EDIT 3
       catch(Exception& exc)       {        cout << "Wystapila sytuacja wyjatkowa: " <<  exc.Message.c_str() << endl;       }
No ja mam nadzieję, że to się tyczyło klasy Exception [przez duże 'e']; Borland Builder rzeczywiście potrafi podpiąć takie wyjątki do obsługi w C++, ale robi to prawdopodobnie przy użyciu Structured Exception Handling; i ogólnie taki kod działać będzie tylko pod Windowsem i kompilatorem Borlanda.

//EDIT 4
Ale mnie wqrza to "początkujący użytkownik" pod avatarem...
Użytkownik TeMPOraL edytował ten post 16 sierpień 2005, 15:51

...
Dzięki, za wyjaśnienia.

W Dev c++ z małej literki trzeba było napisać Exception, inaczej więcej błędów było, przynajmniej u mnie <_<

W Ekspercie był taki przykład obsługi wyjątku dzielenia przez zero. Nie za bardzo rozumiem redakcję, czemu dają przykłady które działają tylko w Borlandzie :mad: Co ma zrobić początkujący programista normalnego c++, a nie Borlandowskiego??
Przez to tylko namotałem w tym temacie.

P.S. Mam nadzieję że obsługa wyjątków związanych z plikami z kursu eksperta będzie sprawiała mniej kłopotów ;)

P.S2. W Ekspercie była tabelka najpopularniejszych wyjątków. I żaden z nich nie działa w np w Visualu. Więc mam jeszcze jedno pytanie czym zastąpić np EFOpenError?
Użytkownik ssx edytował ten post 16 sierpień 2005, 18:26
W Ekspercie byl kurs o wyjatkach, ale o wyjatkach w BCB. Zaden z tych przykladow nie ma prawa dzialac w innym normalnym kompilatorze :P

Tyle mam do powiedzenia na ten temat. Ewidentnie w redakcji uwazaja zes BCB to jedyny kompilator, i ze inne stosuje sie d jego odmiennosci :P


Ale mnie wqrza to "początkujący użytkownik" pod avatarem...

Szczerze to ja nie jestem pewny czy to jest bcc32 czy BCB konsolowe. Dla mnie oba produkty sa jedan wielka pomylka, i nauka programowania za pomoca ktorego kolwiek kompilatora mija sie z celem. Ale raczej wyjatki ktore pokazali w tym artykule to sa tylko dostepne w BCB. :D


W Dev c++ z małej literki trzeba było napisać Exception, inaczej więcej błędów było, przynajmniej u mnie <_<


Exception z Borlanda to nie to samo Pewnie, to jedna klasa, ktora ma chyba jakas wlasciwosc message czy cos takiego. Ale po co sie tym bawic? BCB i tak juz wyrabia nowe pokolenia niby-programistow, ktore tylko potrafia polozyc komponent na formie i przepisac kod z jakiegos zrodla, a potem pisza na forum bo nie wiedza co zrobic :(

Naukę obsługi wyjątków polecam z Megatutoriala Ja takze

albo z Symfonii C++. Wyjatki sa dopiero w Pasji :)

Nie przejmuj się tym ;)
Obsługa błędu dzielenia przez zero to sprawa procesora i systemu operacyjnego - język C++ nie ma do niej bezpośredniego dostępu. Korzystać możesz ewentualnie z funkcji, które udostępnia system operacyjny. Zamiast sprawdzać wyjątek dzielenia przez zero lepiej użyj if'a i sprawdź, czy dzielnik != 0 ;D
Ekspert zawsze jakies glupie powody wrzucal do swojego kursu

Bo zakładam, że te wyjątki to lista Borlandowa. Jeśli używasz do plików funkcji / klas Borlandowych, to te wyjątki są tam używane. Funkcje WinAPI nie generują wyjątków w ogóle, bo są napisane w C. A strumienie plikowe z Biblioteki Standardowej C++ [std::fstream i wariacje] rzucają wyjątki dziedziczone z klasy std::exception. I tutaj maz racje, dlatego wszystkim polecamy przeczytanie Megatutoriala (Pasji nie polecam, bo prawie ja wyrzucilem kiedy probowalem przeczytac kod zrodlowy listy podwojnie laczanej. Kilkanascie stron tekstu... bry)

Kurak: wqrza mnie to, że jestem tu starszy od 90% zaawansowanych uczestników, gosu, masterów, moderów, itp.  :) Ale to tak mnie pół żartem drażni :D A jak sie widzi goscia pytajacego sie o jakies rzeczywiscie podstawy (typu wyskakuje mi ten error. Tu macie kod, co jest w nim zle?) i widzisz pod jego avatarem Zaawansowany Uczestnik, to az trzesie zeby komus w morde dac, jak ty (albo ja :) ) jestes dopiero Poczatkujacy Uczestnik, co nie? :)

Greco - pół biedy z bcc32 - to chyba jest jeszcze jakoś znośne. Ale z samego Buildera nie ma się co uczyć C++. A co do całego tego tematu - nie widziałem tego kursu, więc niech mi powie ktoś dokładnie czego to był kurs, i dlaczego te wyjątki się tam znalazły. Nie, nie pol biedy, cala bieda! BCC32 nie jest zgodny ze standardem, a jak widze jak piernicza w tym kursie muwiac, ze kod przez nich napisany (nieuwzgledniajacy np std), jest zgodny ze standardem, tak jak bcc32 to az mna trzesie. Kurde, i ludzie sie maja z tego uczyc! :(

Uff...juz koniec


Pewnie, to jedna klasa, ktora ma  chyba jakas wlasciwosc  message czy cos takiego. Ale po co sie tym bawic? BCB i tak juz wyrabia nowe pokolenia niby-programistow, ktore tylko potrafia polozyc komponent na formie i przepisac kod z jakiegos zrodla, a potem pisza na forum bo nie wiedza co zrobic :(


I tak dobrze, że przestali mylić " z '. za duzo php mieli :)

HeHe ;) Nie ma tak łatwo - a kod jest akurat przejrzysty i dobrze opisany. Co prawda sam zrozumiałem go po czasie i kilku[nastu] próbach, ale... no gdzieś on musiał być, a Grębosz fajnie pisze A czy ja mowie, ze kod jest zly? Tylko ze normalnie to analizowalem przyklady czytajac odpowiednio oznaczone linijki na komentarzu, a tutaj musialem szukac, na ktorej stronie jest dana linia :) . To sklonilo mnie do sciagniecia przykladow z Jego strony :)

Ja Pasję polecam z całego serca ^_^ Tak, Pasja jest pasjonujaca :D

Hmm... no cóż; ja na razie mam < 400 postów po dwóch latach obecności na tym forum ^^ To chyba coś świadczy o ludziach, którzy mają > 1000 po 2 miesiącach obecności [no chyba, że cały dzień nic nie robią, tylko na forum piszą]. Ja od 9 maja tego roku siedze na forum, na modemie w dodatku no i mam niewiele mniej postow od ciebie, ale nie jestem statsiarzem. Po prostu akurat mam dostep do stalego netu (przez 3 tygodnie) wiec chce jak najbardziej pomoc ludziom :)

LOL
Kod ich jest zgodny ze Standardem?
Nie no kurde - bez przegięć - gdzie tak powiedzieli? Dawno temu im napisałem coś n/t co myślę o ich kodzie i jak się on ima do Standardu - chyba czas najwyższy to znaleść i im przypomnieć ^^.
No wiesz, nie czytali specyfikacji - w koncu $14 kosztuje, co nie :) . A tak na serio, to w drugiej lekcji tego ich kursu bylo ze ich kod jest zgodny ze standardem, chyba tym z 2k2, i gadali, zebysmy sie nie pluli ze brzydko pisza :(

Pozdrawiam, TeMPOraL. Pozdrowienia ze Szwecji,
Kurak

//EDIT Idealne forum dla statsiarzy :lol:

Ojej... ze Szwecji? :) Hehe, nieźle :)
Pozdrowienia dla wszystkich Szwedów.
Przy okazji zrób coś dobrego - naucz ich zawołania CHAK DE PLANET :D :D

A co do statsiarzy - no właśnie; wyraźnie widać, iż jest to forum właśnie dla nich ;(

CHAK DE PLANET.

Nie TeMPOraL, teraz nie moge sie nauczyc CHAK THE PLANET bo wywala mnie bo beda mysleli ze dzichad chce im zrobic no i nie chce ryzykowac podrozy metrem zeby mi glowy nie odstrzelili :) Ale jak wroce do polski t obede krzyczal CHAK THE PLANET :)
btw wlasnie mi sie bcb zainstalowal :)


Nie TeMPOraL, teraz nie moge sie nauczyc CHAK THE PLANET bo wywala mnie bo beda mysleli ze dzichad chce im zrobic no i nie chce ryzykowac podrozy metrem zeby mi glowy nie odstrzelili :) Ale jak wroce do polski t obede krzyczal CHAK THE PLANET :)
btw wlasnie mi sie bcb zainstalowal :)

Czy to jest na temat?

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •