2010-02-25 7 views
1

Je voudrais créer un objet d'une classe VB6 et appeler une méthode sur cet objet. Si une erreur se produit dansComment gérer une erreur (déclenchée dans une méthode de classe) en dehors d'une classe dans VB6?

cette méthode, je voudrais pouvoir soulever une erreur dans la méthode et l'attraper en dehors de la classe, dans la routine

que j'ai appelé la méthode.

La classe par exemple peut contenir:

Const cmlngMYERROR As Long = vbObjectError + 1001 

Public Sub MyMethod() 

    ... 

    Err.Raise cmlngMYERROR, Err.Source, Err.Description 

End Sub 

La routine d'appel peut contenir:

Private Sub MyCallingRoutine() 

    Dim objMyObject As ClassName 

On Error GoTo ErrorHandler 

    Set objMyObject = New ClassName 

    objMyObject.MyMethod 

    Exit Sub 

ErrorHandler: 
    If Err.Number=clngMYERROR Then 
     ... 
    End If 

End Sub 

Le problème que j'ai est que vous ne pouvez pas définir des constantes publiques au sommet d'une classe. Par conséquent, vous ne pouvez pas

vérifier le numéro d'erreur à l'aide de la constante définie dans le gestionnaire d'erreurs des routines appelantes. Quel est le meilleur

pratique pour vérifier le code d'erreur dans la routine d'appel? Est-ce que j'utilise une erreur de gestion correcte dans cet exemple

(ou sur la bonne voie au moins)?

Merci d'avance.

Répondre

3

Il y a un intelligent (laid?) Astuce pour émuler une constante publique: utiliser une Enum publique à la place

Public Enum PseudoConst 
    cmlngMYERROR = vbObjectError + 1001  
End Enum 
+0

Nothing de laid, solution tout à fait raisonnable. – AnthonyWJones

Questions connexes