Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Option Strict = on

10 réponses
Avatar
Yttrium
Bonjour,

Je suis confronté à un probleme dont je ne trouve pas la solution.
Je m'impose de développer mes applis avec l'option strict = on
Que cela soit bien ou pas, la n'est pas la question...

Mon problème:

Je ne parviens pas à trouver une système de gestion des erreurs efficace
et élégants , dans certains de mes classes...

Exemple :

J'ai uine classe qui est chargée d'exeuter une requete, et de me
retouner un datareader :


Public Function ExecuteRequeteAvecRs(ByVal _strQuery As String)
Dim requete As New System.Data.Odbc.OdbcCommand(_strQuery,
Me.ptConnexion)
Dim myReader As System.Data.Odbc.OdbcDataReader =
requete.ExecuteReader()
Return False
End Function


Pour que cette fonction "fonctionne" correctement avec option strict =
on, je dois typer l'élement qu'elle va me retourner.
Je pensais donc ecrire :

Public Function ExecuteRequeteAvecRs(ByVal _strQuery As String) as
System.Data.Odbc.OdbcDataReader

Mais le problème est le suivant.

Je souhaiterais ajouter dans cette fonction, un try / catch, qui me
permettrait de lever les exceptions lors de l'éxécution de la requete,

donc :

Public Function ExecuteRequeteAvecRs(ByVal _strQuery As String) as _
System.Data.Odbc.OdbcDataReader

Dim requete As New System.Data.Odbc.OdbcCommand(_strQuery,
_ Me.ptConnexion)

try
Dim myReader As System.Data.Odbc.OdbcDataReader =
_ requete.ExecuteReader()
catch
Return False
end try

End Function

Mais evidemment, comme le type de retour est un objet :
System.Data.Odbc.OdbcDataReader
Je ne peux pas retourner un false en cas d'echec..

Dans l'attente d'un conseil avisé,
Salutations.






--

10 réponses

Avatar
Patrick Philippot
Bonjour,

Mais evidemment, comme le type de retour est un objet :
System.Data.Odbc.OdbcDataReader
Je ne peux pas retourner un false en cas d'echec..



Return Nothing

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Patrick Philippot
> Public Function ExecuteRequeteAvecRs(ByVal _strQuery As String) as _
System.Data.Odbc.OdbcDataReader

Dim requete As New System.Data.Odbc.OdbcCommand(_strQuery,
_ Me.ptConnexion)

try
Dim myReader As System.Data.Odbc.OdbcDataReader > _ requete.ExecuteReader()
catch
Return False
end try

End Function



En passant, il faudrait peut-être retourner un DataReader également en cas
de succès.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Patrick Philippot
> Bonjour,



Bonjour. Désolé, j'étais dans l'urgence.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Patrice
En complément des réponses de Philippe, le code qui utilisera cette fonction
verra qu'elle échoue grâce à l'exception pas spécialement grâce au fait que
la valeur de retour à une valeur particulière.

(par exemple une fonction pourrait retourner Nothing ou False pour une
raison tout à fait légitime, le principe est que c'est l'exception levée par
la fonction qui indique au code appelant un problème et non pas une valeur
de retour particulière).

--
Patrice
--

"Yttrium" a écrit dans le message de news:
449aaa0f$0$817$
Bonjour,

Je suis confronté à un probleme dont je ne trouve pas la solution.
Je m'impose de développer mes applis avec l'option strict = on
Que cela soit bien ou pas, la n'est pas la question...

Mon problème:

Je ne parviens pas à trouver une système de gestion des erreurs efficace
et élégants , dans certains de mes classes...

Exemple :

J'ai uine classe qui est chargée d'exeuter une requete, et de me retouner
un datareader :


Public Function ExecuteRequeteAvecRs(ByVal _strQuery As String)
Dim requete As New System.Data.Odbc.OdbcCommand(_strQuery,
Me.ptConnexion)
Dim myReader As System.Data.Odbc.OdbcDataReader > requete.ExecuteReader()
Return False
End Function


Pour que cette fonction "fonctionne" correctement avec option strict = on,
je dois typer l'élement qu'elle va me retourner.
Je pensais donc ecrire :

Public Function ExecuteRequeteAvecRs(ByVal _strQuery As String) as
System.Data.Odbc.OdbcDataReader

Mais le problème est le suivant.

Je souhaiterais ajouter dans cette fonction, un try / catch, qui me
permettrait de lever les exceptions lors de l'éxécution de la requete,

donc :

Public Function ExecuteRequeteAvecRs(ByVal _strQuery As String) as _
System.Data.Odbc.OdbcDataReader

Dim requete As New System.Data.Odbc.OdbcCommand(_strQuery,
_ Me.ptConnexion)

try
Dim myReader As System.Data.Odbc.OdbcDataReader > _ requete.ExecuteReader()
catch
Return False
end try

End Function

Mais evidemment, comme le type de retour est un objet :
System.Data.Odbc.OdbcDataReader
Je ne peux pas retourner un false en cas d'echec..

Dans l'attente d'un conseil avisé,
Salutations.






--



Avatar
Patrice
De Patrick, pas de Phillipe !! Désolé de ce petit mélange vespéral de nom et
de prénom...

--
Patrice

"Patrice" a écrit dans le message de news:


En complément des réponses de Philippe, le code qui utilisera cette
fonction verra qu'elle échoue grâce à l'exception pas spécialement grâce
au fait que la valeur de retour à une valeur particulière.

(par exemple une fonction pourrait retourner Nothing ou False pour une
raison tout à fait légitime, le principe est que c'est l'exception levée
par la fonction qui indique au code appelant un problème et non pas une
valeur de retour particulière).

--
Patrice
--

"Yttrium" a écrit dans le message de news:
449aaa0f$0$817$
Bonjour,

Je suis confronté à un probleme dont je ne trouve pas la solution.
Je m'impose de développer mes applis avec l'option strict = on
Que cela soit bien ou pas, la n'est pas la question...

Mon problème:

Je ne parviens pas à trouver une système de gestion des erreurs efficace
et élégants , dans certains de mes classes...

Exemple :

J'ai uine classe qui est chargée d'exeuter une requete, et de me retouner
un datareader :


Public Function ExecuteRequeteAvecRs(ByVal _strQuery As String)
Dim requete As New System.Data.Odbc.OdbcCommand(_strQuery,
Me.ptConnexion)
Dim myReader As System.Data.Odbc.OdbcDataReader >> requete.ExecuteReader()
Return False
End Function


Pour que cette fonction "fonctionne" correctement avec option strict =
on, je dois typer l'élement qu'elle va me retourner.
Je pensais donc ecrire :

Public Function ExecuteRequeteAvecRs(ByVal _strQuery As String) as
System.Data.Odbc.OdbcDataReader

Mais le problème est le suivant.

Je souhaiterais ajouter dans cette fonction, un try / catch, qui me
permettrait de lever les exceptions lors de l'éxécution de la requete,

donc :

Public Function ExecuteRequeteAvecRs(ByVal _strQuery As String) as _
System.Data.Odbc.OdbcDataReader

Dim requete As New System.Data.Odbc.OdbcCommand(_strQuery,
_ Me.ptConnexion)

try
Dim myReader As System.Data.Odbc.OdbcDataReader >> _ requete.ExecuteReader()
catch
Return False
end try

End Function

Mais evidemment, comme le type de retour est un objet :
System.Data.Odbc.OdbcDataReader
Je ne peux pas retourner un false en cas d'echec..

Dans l'attente d'un conseil avisé,
Salutations.






--







Avatar
Yttrium
Patrice a écrit :
En complément des réponses de Philippe, le code qui utilisera cette fonction
verra qu'elle échoue grâce à l'exception pas spécialement grâce au fait que
la valeur de retour à une valeur particulière.

(par exemple une fonction pourrait retourner Nothing ou False pour une
raison tout à fait légitime, le principe est que c'est l'exception levée par
la fonction qui indique au code appelant un problème et non pas une valeur
de retour particulière).




Entendu, mais commment avoir connaissance de cette exception dans la
fonction appelante ?
Avatar
Yttrium
Patrick Philippot a écrit :

En passant, il faudrait peut-être retourner un DataReader également en cas
de succès.


Oui, oui, ce n'est qu'un extrait de code simplifié...
Avatar
Millox Frédéric
Salut Yttrium,

Tu peux gérer cette exception dans la fonction appelante en prolongeant
l'exception à la fonction appelante.

try
.....
catch ex as Exception
Throw new Exception(ex.toString)
end try

A+

--
fmillox


"Yttrium" a écrit :

Patrice a écrit :
> En complément des réponses de Philippe, le code qui utilisera cette fonction
> verra qu'elle échoue grâce à l'exception pas spécialement grâce au fait que
> la valeur de retour à une valeur particulière.
>
> (par exemple une fonction pourrait retourner Nothing ou False pour une
> raison tout à fait légitime, le principe est que c'est l'exception levée par
> la fonction qui indique au code appelant un problème et non pas une valeur
> de retour particulière).
>

Entendu, mais commment avoir connaissance de cette exception dans la
fonction appelante ?



Avatar
Patrick Philippot
Patrice wrote:
De Patrick, pas de Phillipe !! Désolé de ce petit mélange vespéral de
nom et de prénom...



Pas de problème. Voilà 58 ans que ça dure :-) .

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Patrice
Cf réponse de Frédéric (je ne me suis pas trompé simplement) ou tout
simplement ne pas la gérer ici.

Le principe est que quand une exception survient, elle est traitée par le
premier try catch rencontré en remontant dans les appels (éventuellement un
gestionnaire global). Après il est possible éventuellement de tout de même
l'attraper (par exemple pour libérer une ressource) tout en la laissant se
propager ( pour qu'elle soit traitée par un appelant)...

--
Patrice

"Yttrium" a écrit dans le message de news:
449af48e$0$14878$
Patrice a écrit :
En complément des réponses de Philippe, le code qui utilisera cette
fonction verra qu'elle échoue grâce à l'exception pas spécialement grâce
au fait que la valeur de retour à une valeur particulière.

(par exemple une fonction pourrait retourner Nothing ou False pour une
raison tout à fait légitime, le principe est que c'est l'exception levée
par la fonction qui indique au code appelant un problème et non pas une
valeur de retour particulière).




Entendu, mais commment avoir connaissance de cette exception dans la
fonction appelante ?