Gestion des exceptions personnalisées dans ma classe

cs_bonagad Messages postés 87 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 19 mai 2012 - 13 janv. 2011 à 10:47
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 13 janv. 2011 à 15:21
Salut les amis,
j'ai un souci dont je désire soliciter votre coup de pouce. je suis entrain d'écrire une librairie (dll) réutilisable.c'est-à-dire qu'elle ne sera pas forcement seulement utilisée dans ma propre application.je voudrais enfin la partager à qui la veut.Mais en ce moment je rencontre quelques difficultés.elles
sont de deux ordres:
je veux en premier lieu pouvoir mettre en place des exceptions personnalisées afin
que quiconque utilise ma librairie puisse faire appel à mes exceptions en vue d'éviter quelque anormalies.
Exemple d'utilisation de quelques classes de ma dll:
Try
 'ici l'appel des instruction de ma librairie et d'autres choses...
 catch ex_personal as mytype

'ici message ou autres
End try



En deuxième lieu:
je dispose d'une classe nommée "joypak" dans ma librairie qui possède deux constructeurs et des membres. Un aperçu de cette classe est:

Public Class joypak
 Private _A,_B as string
 Private _X,_Y as double
 Private _K as double

 Sub new (ByVal x as double,ByVal y as double) ' Constructeur1
  _X x: _Y y
 End sub

 Sub new (ByVal a as string,ByVal b as string,ByVal k as Double) ' Constructeur2
  _A a: _B b
  _K=k
 End sub

 Public Sub proc1()
 
 End sub

 Public Sub proc2()

 End sub

 Public Sub proc3()
 
 End sub

End Class


Ma préoccupation est ceci: je voudrais que lorsque je cré une instance Var1 de la classe joypak avec le constructeur 1, que je ne puisse qu'avoir accès uniquement aux méthodes Proc1 et Proc2.donc l'appel de la methode proc3 avec cette variable devrait généré une erreur et ensuite lorsque j'instancie Var2 avec le constructeur 2, que je ne puisse avoir accès uniquement qu'à la méthode public Proc3.

Illustration:
Dim Var1 as new joypak(12.5, 15.0)
 Messagebox.show (var1.proc1)
 Messagebox.show (var1.proc2)
 Messagebox.show (var1.proc3) 'si tout va bien 'une erreur doit etre générée.
Messagebox.show (var2.proc3) 'par contre cette 'instruction doit marcher.


merci d'avance pour les essais de solutions.
Best Regards.

5 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
13 janv. 2011 à 12:11
salut

Pour la deuxieme question,
un heritage devrait repondre à ton probleme

joypakA herite de joypak
et defini proc1 et proc2

et joypakB herite de joypak
et defini proc3

Et la ca ne compilera pas si tu fais

var1.proc3 car var1 est de type joypakA

Et tu peux boucler sur tous les joypak
pour appellé une méthode commune
ou une méthode de joypakA en testant le type avant
0
cs_bonagad Messages postés 87 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 19 mai 2012
13 janv. 2011 à 14:47
salut

Pour la deuxieme question,
un heritage devrait repondre à ton probleme

joypakA herite de joypak
et defini proc1 et proc2

et joypakB herite de joypak
et defini proc3



D'abord merci pour la spontanéité de ta réponse mais je ne me retrouve pas encore sur ta réponse.si j'essaie de comprendre c'est que joypakA et joypakB sont bien sûr des classes qui héritent de la classe joypak et qui ont respectivement pour méthodes: proc1; proc2 et proc3.
me basant sur cette compréhension comment dois-je instancier ma classe joypak. est-ce que lorsque je fais
 Var1 As new joypak(12.5,18.0)
,
j'accèderai qu'à proc1 et proc2. ou dois-je faire d'abord faire
 Var1 As new joypakA(12.5,18.0)
pour que ça marche. Car la dernière option ne m'intéresse guère.
merci encore et je t'espère...
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
13 janv. 2011 à 14:55
Pourquoi la derniere solution ne t'interesse pas.
Motives ton choix.

sinon il y a une solution
c'est de mettre des contrats sur tes méthodes

 Public Sub proc3()
 if(Constructeur2Call = false) then throw new Exception("tu n'as pas le droit de m'appeler")

'le corps de la proc3
 End sub
0
cs_bonagad Messages postés 87 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 19 mai 2012
13 janv. 2011 à 15:14
Est-ce que tu veux me faire comprendre qu'il n'existe aucune instruction qui me permet limiter l'accès de certaine méthodes bien que publique dans une classe selon qu'on appelle telle ou telle constructeur de cette classe.
0

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

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
13 janv. 2011 à 15:21
Oui, il me semble, je ne connais pas tout non plus.

Il faut donc trouver soit une autre architecture (heritage par exemple)
ou des artifices pour controler ce que tu souhaites
controle de l'etat de l'objet
0
Rejoignez-nous