Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

OS Linux

gcc en try catch

WvM
12 antwoorden
  • Ik had deze vraag ook al in de afdeling programmeren gezet, maar uit ervaring weet ik dat de reacties daar zeer dun gezaaid zijn, daarom hier ook maar even, tgaat tenslotte om linux :wink:

    hoi,

    als ik in linux een programma waarin ik fouten afvang met try catch compileer lijkt alles in eerste instantie prima te gaan. Maar als ik het progje dan run, wordt de try catch gewoon genegeerd!.

    Ligt niet aan de code, want als ik hem met een win32 compiler compile, werkt het wel,

    Dus met gcc geen foutmeldingen, maar toch niet werken :s . Moet ik tijdens compilen soms een flag meegeven ofzo?

    plors

    NB. ik kan voorbeeld code geven als het niet helemaal duidelijk is, u roept maar :smile:
  • Probeer een met g++ te compilen. C kent volgens mij geen try.
  • idd, C kent geen try-catch blokken.

    Kan me er dus alleen maar bij aansluiten om g++ te proberen. =
  • hoi, dat heb ik gedaan, maar g++ roept alleen gcc aan met een aantal parameters, die het geschikt maakt voor c++.

    bovendien had ik dan errors moeten krijgen tijdens het compilen en dat is niet het geval.

    Hier kan het dus niet aan liggen.

    iig bedankt voor de reacties alvast
  • compileer eens met -Wall flag.
  • helpt niets helaas :sad:
  • Krijg je dan helemaal geen (fout)melding als je g++ doet?
  • jawel,

    return type for `main' changed to `int'

    dat was dus de foutmelding, ik zal voor de duidelijkheid ook ff de code posten, van het testprogrammaatje:

    #include <stdio.h>
    #include <iostream.h>

    void main()
    {
    int a,b;
    while (1) {
    cout << "nnGeef 2 getallen : n";
    cin >> a;
    cin >> b;
    try {
    cout << "uitkomst : " << a / b;
    } catch ( … ) { }
    }
    }

    als je nu deelt door nul zou het programma gewoon door moeten gaan, maar hij klapt er dus uit, met idd de melding "Floating point exception"

    grtz
  • Niet dat het er eenvoudiger op wordt, maar ik heb het probleem gevonden. G++ vangt niet standaard de SIGFPE (floating point exception) af. Om dit wel te laten gebeuren moet je een (nieuwe) signal handler voor SIGFPE installeren, die een exception throwt (klinkt interressant) die je later weer kan afvangen. Zie ook het volgende stukje:
    http://gcc.gnu.org/ml/gcc-help/2002-04/msg00003.html
  • leuk dat je iets gevonden hebt :smile:

    probleem is dat ik dit progje alleen gebruik om try catch te testen.

    In werkelijkheid wil ik Exception handling in o.a. een Client/Server applicatie gaan gebruiken en daar werkt het dus ook niet….

    vreemde vind ik dus dat er geen compile errors komen, en dat het toch niet werkt :-/

    zelf zoek ik ook verder, als ik iets vind post ik het wel even.
    Ondertussen blijft alle hulp natuurlijk welkom.

  • [quote:92d038a890]
    Op 27-04-2002 12:56 schreef plors:
    leuk dat je iets gevonden hebt :smile:

    probleem is dat ik dit progje alleen gebruik om try catch te testen.

    In werkelijkheid wil ik Exception handling in o.a. een Client/Server applicatie gaan gebruiken en daar werkt het dus ook niet….

    vreemde vind ik dus dat er geen compile errors komen, en dat het toch niet werkt :-/

    zelf zoek ik ook verder, als ik iets vind post ik het wel even.
    Ondertussen blijft alle hulp natuurlijk welkom.


    [/quote:92d038a890]
    Het is geen fout, het is zo bedoeld dat een SIGFPE geen exception opwerpt. Als je dit wel wilt moet je een exception handler schrijven die dit wel doet.
  • is daar dan bewust voor gekozen in gcc ofzo? want met de compiler van VC++ werkt het wel goed.

    misschien kan iemand hier iets mee: ik wil de exceptionhandling dus gaan gebruiken om fouten bij het schrijven/lezen naar en van sockets af te vangen.

    Dus simpelweg voorkomen dat een servertje eruit knalt, als er iets mis gaat bij de client.
    Dit werkt dus ook niet, het lijkt wel of het hele try catch blok gewoon genegeerd wordt.

    Nu zijn er wel andere manieren om fouten af te handelen, maar ik wil gewoon graag ff weten hoe het zit met try catch.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.