Résultats de 1 à 8 sur 8

Sujet : Throw

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    3

    Throw

    Queldu\'un peut-il m\'expliquer \"throw\" et surtout comment arrêter un programe où il y a eu ce \"machin\" (j\'ai essayer à coup de while(1==1); mais rien n\'y fait)...
    Merci.

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    627
    Salut,
    euh moi pas comprendre :cry:
    ca fait quoi quand tu fait quoi? Il est ou le throw?
    ... Until then, we're better off dead
    A smile on the lips and a hole in the head ...

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    665
    Ouiinnn :cry:
    Je n\'arrive plus à télépathiser.
    Comprenez mon malheur.
    En conséquence, je pense que tu risques d\'être obligé de détailler un peu plus ton problème :
    - compilateur.
    - erreur exacte
    - zone de code où celle ci arrive
    - de rajouter quelques biscuits à la fraise pour faciliter notre concentration.
    :wink:
    [col=#FFDD1A]( [/col][col=#FF0000]B[/col]e [col=#FF0000]S[/col]i[col=#FF0000]d[/col]e [col=#FFDD1A])[/col]

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    329
    Hum, avec quelques efforts de divination on peut imaginer qu\'il demande l\'utilité d\'un throw (jusque là ça va)... mais de là à trouver un rapport avec une boucle... J\'ai jamais eu l\'idée d\'itérer sur un throw mais pourquoi pas :P:

    Nan, sans déconner j\'ai absolument rien compris, il va falloit détailler et, si possible, montrer ton code.

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    627
    Salut tastalian,
    Peux tu m expliker ce qu un throw?
    ... Until then, we're better off dead
    A smile on the lips and a hole in the head ...

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    329
    throw est utilisé pour la gestion des exceptions en C++, ainsi que try et catch. Soit le code suivant :

    Code:
    try
    {
        fonction1();
    }
    catch (classError ex)
    {
        // Traitement d\'une erreur de type
        // classError (on a accès aux membres
        // de l\'objet pour le type d\'erreur par ex)
    }
    catch (...)
    {
        // Traitement de toutes les autres errreurs
    }
    Où le code de fonction1() est :

    Code:
    void fonction1(void)
    {
        // Traitements quelconques
        if (error1)
        {
            classError aye;
            aye.type = \"segfault\";
            throw aye;
        }
        else if (error2)
        {
            classError2 gen;
            throw gen;
        }
    }
    Si la fonction fonction1() intercepte une erreur (ici un booléen comme error1 ou error2), elle complète une classe de type erreur (utile pour déterminer la cause de l\'erreur) et la \"jette\" (throw).

    Toutes les erreurs lancées depuis un bloc try sont intercéptées par les catch qui suivent : ici, si le booléen error1 est vrai dans fonction1(), l\'erreur sera intercéptée par le premier catch qui la traitera en fonction, par exemple, du champ type. Ce système est très utile : il peut servir à afficher des messages d\'erreurs ou, mieux, à les corriger.

    Si l\'erreur lancée depuis un bloc try n\'est pas interceptée par à un catch précis, c\'est le dernier catch (...) qui intercepte toutes les autres erreurs (messages génériques...)

    Ce système de gestion des exceptions du langage est particulièrement puissant, surtout pour les gros programmes. Il est très utilisé, par exemple, avec ces Design Patterns si bien architecturés

    Voilà tout, si vous ne connaissez pas je vous conseille à tous d\'essayer, on s\'y fait très vite :wink:

  7. #7
    Membre MP
    Inscrit
    août 2013
    Messages
    627
    Ben j utilise try et catch mais avec c# et je sais pas s il y a besoin de trhow vu que tout est géré par la GC (garbage collector)
    ... Until then, we're better off dead
    A smile on the lips and a hole in the head ...

  8. #8
    Membre MP
    Inscrit
    août 2013
    Messages
    329
    Bien, je ne vois pas le rapport entre ces gloutons d\'algos de GC et throw : les gc sont là pour réallouer la mémoire dont on a plus besoin, entre autre, tandis que throw est une interruption. Les instructions après throw ne sont plus exécutées, mais tu récupères la classe d\'erreur renvoyée. Je ne sais pas s\'il y a un équivalent de throw en CSharp, mais ça me semble étrange que des algos de GC gèrent des interruptions.

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé
Please disable Adblock!