Accueil > Forum > > > > gestion des erreurs venant de différentes couches
gestion des erreurs venant de différentes couches
jeudi 31 mars 2011 à 17:32:00 |
gestion des erreurs venant de différentes couches

razuki
|
Bonjour,
je dois rajouter une couche SSL sous une application existante :
TCP-> SSL -> MYapi -> application
J'ai une classe errorcode qui est définie comme suit :
Code C/C++ :
class errorcode {
int err;
public:
errorcode() : err(0) { }
errorcode(int e) : err(e) { }
#if defined(__APPLE__)
static int lasterror() { (int) pthread_getspecific(gMyErrCode); }
~errorcode() { pthread_setspecific(gMyErrCode, (void*) err); }
#elif !defined(_WIN32_WCE)
static int lasterror() { return gMyErrCode; }
~errorcode() { gMyErrCode = err; }
#else
~errorcode() { TlsSetValue(gMyErrCode, (LPVOID) err); }
static int lasterror() { return (int)TlsGetValue(gMyErrCode); }
#endif
operator int() const { return err; }
int operator-() const { return -err; }
errorcode& operator=(int e) { err = e; return *this; }
};
l'utilisation de la classe errorcode est comme suit :
Code C/C++ :
[color=red]errorcode err;[/color]
...
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (!sock) {
[color=red] err = sockerrno();[/color]
log(ERROR, "error %s creating sock socket", sockstrerror(err));
goto oserror;
}
...
if (!socki->u.rtcp.info) {
log(ERROR, "no memory for rtcp protocol info");
[color=red]err = MY_ERROR_OUTOFMEMORY;[/color]
goto myerror;
}
je dois traiter les erreurs générées éventuellement par ma couche SSL.
Mes questions :
Est ce que je dois rajouter des codes d'erreurs de type MY_ERROR_PUB_KEY_NOT_FOUND dans la liste (enum) des codes d'erreurs ou j'utilise le code d'erreurs offert par OpenSSL ? en gros :
Code C/C++ : err = MY_ERROR_PUB_KEY_NOT_FOUND
ou
Code C/C++ : err = ERR_SSL_PUB_KEY_NOT_FOUND
Merci d'avance pour votre aide.
|
|
jeudi 31 mars 2011 à 17:38:04 |
Re : gestion des erreurs venant de différentes couches

CptPingu
|
Utilise tes propres codes d'erreurs. En effet, si un code d'erreur SSL à la même valeur qu'une erreur existante dans la solution que tu reprends, tu seras bien embêté...
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
jeudi 31 mars 2011 à 18:00:41 |
Re : gestion des erreurs venant de différentes couches

razuki
|
Et le mec qui a écrit les codes d'erreur MY_ERROR_..., comment il peut savoir que ca coincide pas aux codes d'erreur de l'OS ?
|
|
jeudi 31 mars 2011 à 18:04:19 |
Re : gestion des erreurs venant de différentes couches

CptPingu
|
Aucune importance, tant qu'il n'exploite pas les deux au même moment.
Le seul souci c'est quand tu compares les valeurs:
Code C/C++ :
#define MY_ERROR1 1
#define MY_ERROR2 2
#define KERNEL_ERROR 1
#define UNKNOW_ERROR 2
int err = UNKNOW_ERROR;
if (err == MY_ERROR2)
{
// Entrera ici
}
else if (err == UNKNOW_ERROR)
{
// N'entrera jamais ici
}
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
jeudi 31 mars 2011 à 18:18:31 |
Re : gestion des erreurs venant de différentes couches

razuki
|
D'acc.
en fait il n'a pas utilisé des #defines mais un myerrno.h contenant :
Code C/C++ : enum MY_ERRORS {
MY_ERROR_NOERROR = 0,
MY_ERROR_SUCCESS = 0,
MY_ERROR_BASE = 0x0C510000, /* Potentiellement à modifier */
/* Erreurs génériques */
MY_ERROR_BUFFERTOOSMALL, /* Taille du tampon trop petite. */
MY_ERROR_TIMEOUT, /* L'opération est trop longue. */
MY_ERROR_OUTOFMEMORY, /* Il n'y a plus de mémoire disponible. */
MY_ERROR_INVALIDPARAMETERS, /* Certains paramètres sont invalides. */
MY_ERROR_INVALIDFORMAT, /* Le format des données entrées est incorrect*/
MY_ERROR_NOTREADY, /* La fonction n'est pas prête à effectuer l'opération. */
MY_ERROR_FILENOTFOUND, /* Le fichier est introuvable */
MY_ERROR_SOCKETERROR, /* Erreur de la bibliothèque socket du système*/
/* Erreurs réseaux */
MY_ERROR_NETWORK = (MY_ERROR_BASE + 0x1000),
MY_ERROR_CONNECTIONREFUSED, /* Le serveur a refusé la connexion. */
j'imagine que la valeur MY_ERROR_BASE n'est pas à choisir au hasard ...
il faut prendre les un interval sûr, c'est à dire non occupé par les erreurs système, non ?
|
|
jeudi 31 mars 2011 à 18:24:39 |
Re : gestion des erreurs venant de différentes couches

CptPingu
|
Oui :)
L'important ce que tu n'ais pas de code d'erreur ayant la même valeur au sein de ton application, s'ils ont vocation à être comparé dans un même ensemble.
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
Cette discussion est classée dans : code, int, erreurs, err, errorcode
Répondre à ce message
Sujets en rapport avec ce message
ERREURS incompréhensibles ? au secours ......!!! [ par nicoy2000 ]
xlC *.C affiche.C:fond.C:sapin.C:sol.C:triangleJD.C:triangleJG.C:ld: 0711-224 WARNING: Duplicate symbol: .triangleJG(int,int,char(*)[5],int,int)ld:
Aide pour mega debutant [ par C++ ]
Salut, bon alors je vien d ouvrir c++ mais comment mettre un code sur un boutton ???par exemple ce code comment je doits le mettre sur un bouton :int
Probleme avec le "linker" [ par Darkneon ]
Salut,J'ai 3 fichiers comme ceciTest.cpp#include "test.h"#include void PrintA(int num){ for(int i=0; i<num; i++
Cacher le curseur [ par BsEtZeOpLhD ]
Salut.J'essay de cacher le curseur sous win Xp.J'ai fait le code suivant :#include int WINAPI WinMain(HINSTANCE hinstExe, HINSTANC
besoin d'aide [ par ekinoks ]
voila g trouver un code c++ pour decrypté un fichier mais je m'y conné pas dutout en c++ kunkun pouré m'aidéle code est :void p(FILE* fp, int seed) {
exception et AfsMessageBox [ par poseidon2 ]
Voic mon code: void *ImageLink::imageRecvThread(void *pParam){ ImageLink *iLink = (ImageLink*)pParam; int nIndex = 0; int nSizeRecv = 0; unsigned in
Difference [ par xionoxid ]
C'est koi la difference entre time (0) et time (NULL) les 2 font des nbr aleatoire !??#include #include #i
Pointeur [ par casafa ]
Bonjour tlm,Je suis débutant et je comprend à quoi sert les pointeurs...Quel est la différence entre ces 2 exemples, qu'est ce que le premier à en plu
Erreur [ par LordBob ]
Salut a tous,voila je voudrait faire un truc, mais je n'y arrive pas. Alors plutot que de vous expliquez ce que c'est, je vous montre le code.#include
Lots de questions [ par Arkko ]
J'ai quelque question et pour mieux les expliquer regarder le code si-dessousclass Rationnel{ private: int numerateur; int denominate
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|