Equivalent Err.Raise...

Résolu
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 - 20 juil. 2006 à 10:00
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 - 20 juil. 2006 à 11:51
Bonjour à toutes et à tous (toutes ???...)

Voilà j'ai un problème dans mon code.

Je dois utiliser une API fournie par la société par laquelle je travaille, et dans l'exemple de code, en VB.Net, la fonction Err.Raise() est utilisée de la manière suivante :
    If result vbOK Then<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" /??>

        'Do something
    
   End If

   

    If result = vbCancel Then

      'API_S_CANCELLED=une valeur d'erreur interprétée par le pgm..
       Err.Raise API_S_CANCELLED

    End If

J'ai lu à droite à gauche que le Err.Raise n'était aps utilisable en C#, mais qu'il fallait passer par le throw d'une exception...

Cependant, dans mon cas présent, il ne s'agit pas d'une exception précise, mais d'un numéro d'erreur, qui sera interprétée au niveau du code...

Je ne vois pas comment utiliser l'équivalence de cet exemple en VB.Net en C#.
 Avez vous une idée ?

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher

9 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
20 juil. 2006 à 11:02
Salut,

public enum ErrorCode
{
    Undefined = 0,
    Cancelled = 1, // API_S_CANCELLED
    // etc..
}


public class APIException : ApplicationException
{
    private readonly ErrorCode errorCode = ErrorCode.Undefined;


    public ErrorCode ErrorCode
    {
        get { return errorCode; }
    }


    public APIException( ) : base( ) { }


    public APIException( ErrorCode errorCode ) : base( )
    {
        if ( !Enum.IsDefined( typeof( ErrorCode ), errorCode ) )
            this.errorCode = ErrorCode.Undefined;


        this.errorCode = errorCode;
    }
}
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
20 juil. 2006 à 10:11
Salut,

Une idée :
Créer ta propre Exception (en dérivant par exemple de System.Exception) et y ajouter un champs de type int qui correspondera à ton numéro d'exception...

<hr size= "2" /> VC# forever
=13319
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
20 juil. 2006 à 10:27
Salut,

Si je ne me trompe pas, cette chose est liée à la gestion d'erreur via On Error etc
Si c'est bien le cas (mais qu'est ce que ça fait dans un code VB.NET ?) tu n'as pas d'autre choix que de revoir le fonctionnement en gérant avec des exceptions.

/*
coq
MVP Visual C#
CoqBlog
*/
0
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
20 juil. 2006 à 10:35
Bidou -> Je n'ai pas l'habitude de dériver des classes (j'ai du mal à me mettre à l'objet)

Pourrais tu me faire un petit exemple dans les grandes lignes stp ?

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
20 juil. 2006 à 11:16
Ben voilà, Lutinore l'a fait pour moi 

<hr size= "2" /> VC# forever
=13319
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
20 juil. 2006 à 11:18
Je passais par là..
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
20 juil. 2006 à 11:35
Et une réponse collégiale, une ! :p

/*
coq
MVP Visual C#
CoqBlog
*/
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
20 juil. 2006 à 11:46
lol 

<hr size= "2" /> VC# forever
=13319
0
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
20 juil. 2006 à 11:51
Ok
Merci beaucoup pour cette leçon particulière !

Je vois que j'ai encore beaucoup de boulot avant de commencer à comprendre et maitriser le C#....

Visiblement, cette solution ne marche pas comme elle devrait marcher, mais il s'agirait d'un pb de mauvaise interprétation de l'API... ce qui va plus regarder maintenant la société qui nous a fourni ces API maintenant...

Encore merci pour le coup de main.

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
0
Rejoignez-nous