Se connecter / S'enregistrer
Votre question

Gestion d'erreurs en C

Tags :
  • Visual basic
  • Programmation
Dernière réponse : dans Programmation
Anonyme
29 Août 2007 16:46:08

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.***.

Autres pages sur : gestion erreurs

29 Août 2007 16:49:16

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.
Anonyme
29 Août 2007 16:56:54

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++ :) 
Contenus similaires
29 Août 2007 17:08:27

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/library/c68xfk56(VS.80).aspx )

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

EDIT: J'ai corrigé le ton de mon message :) 
Anonyme
29 Août 2007 17:17:59

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.
a b L Programmation
29 Août 2007 21:34:02

Rakipu a dit :
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/longjump_try_trow_catch.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).
30 Août 2007 01:18:57

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 
Anonyme
30 Août 2007 11:10:47

CRicky a dit :
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/longjump_try_trow_catch.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: 
a b L Programmation
30 Août 2007 20:05:26

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 :) 
Anonyme
30 Août 2007 22:01:41

C'est peut etre crado mais pratique :) 
a b L Programmation
30 Août 2007 22:25:20

autant faire du C++ alors :) 
Anonyme
30 Août 2007 22:27:17

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++ :) 
30 Août 2007 23:01:15

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!
a b L Programmation
30 Août 2007 23:23:35

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

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS