Tom's Guide > Forum > Programmation > Gestion d'erreurs en C
Mot :    Pseudo :           
 

Il y a t'il une "fonction" qui gererai les erreurs en C ?

Comme par exemple en Visual Basic "On Error", je ne sais pas si ca s'appelle une fonction, si qqn a le nom exacte pour ma culture generale ca m'interesse.

Puis il y aurait pas une variable structurée en meme temps ?
Exemple encore en VB : Err.***.

------------------------------ Codialement, Hrusdik.
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Je suppose que tu parles de la gestion des "exceptions" (try, catch, ...), que la syntaxe du C ne supporte pas.

EDIT: C'est à toi de tester pour éviter les problèmes; certaines bibliothèques (je pense à GTK) utilisent un modèle "objet" et implémentent leur propre système d'exceptions.
Enfin, je crois.

Message cité 1 fois
Message édité par Rakipu le 29-08-2007 à 16:52:45
Répondre à Rakipu

Hmmm ...

Ce dont je parlais c'est par exemple, on place 300 dans une variable Byte ca provoque une erreur, bon je fais un code exemple on comprendra mieux :

Sub MaFunction()
Dim variable As Byte

On Error Goto ErreurDansMaFunction

variable = InputBox ("Question ?" ) ' supposons que l'utilisateur rentre 300
' ceci provoque l'erreur 9 depacement de capacité provoquant ainsi
' un Goto vers Erreur dans ma Function

'code ...

Exit Sub

ErreurDansMaFunction:

MsgBox "MaFunction a eu l'erreur " & Err.Num & " ( " & Err.Desc & " )"

End Sub

Voila si jamais il y a une erreur ( un depacement de capacité dans mon exmeple), je peux la gerer comme bon me semble.

Je voudrais la meme chose en C et en C++ :)


Message édité par Hrusdik le 29-08-2007 à 16:59:43
------------------------------ Codialement, Hrusdik.
Répondre à Hrusdik

Ca s'appelle (justement) la gestion des exceptions (là, c'est la gestion des erreurs, une version low cost: la "vraie" (le terme exact est "structurée" ) gestion des exceptions existe aussi en VB: http://msdn2.microsoft.com/fr-fr/l [...] S.80).aspx )

La gestion des exceptions existe en C++, mais pas en C.

EDIT: J'ai corrigé le ton de mon message :)


Message édité par Rakipu le 29-08-2007 à 17:10:19
Répondre à Rakipu

Citation :

L'instruction Try...Catch...Finally sert de manière spécifique à la gestion structurée des exceptions.



^^ Merci je connaissais pas.

Donc en C je devrais tout prevoir moi meme :P
Arf, dommage, en plus que c'est ( pas trop mais commeme ) compliqué en plus ca gere pas les erreures xD

Merci beaucoup pour ton aide en tout cas.

------------------------------ Codialement, Hrusdik.
Répondre à Hrusdik

Rakipu a écrit :

Je suppose que tu parles de la gestion des "exceptions" (try, catch, ...), que la syntaxe du C ne supporte pas.


En fait pas vraiment :D
Disons, qu'on peut en faire avec setjmp, mais il ne faut pas l'utiliser, car ce n'est pas l'usage normal. Pour info, je donne un lien, mais je recommande encore de ne pas utiliser cette technique. Si c'est pour faire des exceptions, mieux vaut passer directement au C++ (même si ce que pour programmer en procédural).
http://www.di.unipi.it/~nids/docs/ [...] atch.shtml

Certains (et je trouve que c'est une bonne technique pour le C pur) s'impose de mettre un code d'erreur en retour de fonction. La liste des codes possibles étant mis dans des define (ou mieux des enum) pour savoir à quoi ils correspondent. Ceci impose de tester partout les retours de fonctions et de passer outre. On peut aussi utiliser une variable globale indiquant le statut de la dernière fonction (je n'aime pas trop cette technique, mais ça reste une bonne technique).

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

C'est dans le C ANSI ça? On dirait un truc crado tiré directement de l'assembleur...

En regardant vite fait sur le net, j'avais trouvé un truc dans le genre, mais je me suis dit "bah, un délire de programmeur, pas standard" et j'ai passé outre.

Vaut mieux utiliser les codes d'erreur pour remplir cette fonction...

EDIT: Je me coucherais un peu moins con ce soir, tiens :p


Message édité par Rakipu le 30-08-2007 à 01:19:30
Répondre à Rakipu

CRicky a écrit :

En fait pas vraiment :D
Disons, qu'on peut en faire avec setjmp, mais il ne faut pas l'utiliser, car ce n'est pas l'usage normal. Pour info, je donne un lien, mais je recommande encore de ne pas utiliser cette technique. Si c'est pour faire des exceptions, mieux vaut passer directement au C++ (même si ce que pour programmer en procédural).
http://www.di.unipi.it/~nids/docs/ [...] atch.shtml

Certains (et je trouve que c'est une bonne technique pour le C pur) s'impose de mettre un code d'erreur en retour de fonction. La liste des codes possibles étant mis dans des define (ou mieux des enum) pour savoir à quoi ils correspondent. Ceci impose de tester partout les retours de fonctions et de passer outre. On peut aussi utiliser une variable globale indiquant le statut de la dernière fonction (je n'aime pas trop cette technique, mais ça reste une bonne technique).




Merci :jap:

------------------------------ Codialement, Hrusdik.
Répondre à Hrusdik

Je crois que c'est ANSI C99.
Il suffit de mémoriser un contexte et de retourner sur ce contexte (y compris pour le pointeur d'instructions).
L'utilisation de ceci comme des exceptions C++, c'est, je trouve, très crado :)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

C'est peut etre crado mais pratique :)

------------------------------ Codialement, Hrusdik.
Répondre à Hrusdik

autant faire du C++ alors :)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Bah les examples que je lis sont en C, et comme je debute en C/C++ je ne me sens pas d'attaque pour "traduire" du C en C++ :)

------------------------------ Codialement, Hrusdik.
Répondre à Hrusdik

crado mais pratique = vilain! très vilain! Interdit de faire des trucs crados tant que tu maitrise pas parfaitement un langage, non mais!

La syntaxe du C et du C++, c'est la même pour les trucs basiques; donc si tu veux utiliser les exceptions faut le faire en C++.
Va pas apprendre des trucs comme ça alors que tu débute! :D

EDIT: t'as tu pas honte, CRicky! Pervertir la jeunesse avec des horreurs pareilles!


Message édité par Rakipu le 30-08-2007 à 23:07:39
Répondre à Rakipu

Oui, c'était juste pour dire que ce n'est pas impossible, faut pas utiliser ça et encore moins l'apprendre. :)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Tom's Guide > Forum > Programmation > Gestion d'erreurs en C
Aller à :

Il y a 1210 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens