Codigo correcto

09/03/2006 - 11:16 por CC | Informe spam
Hola a todos: estoy migrando un proyecto a 2005, y me encuentro con muchos
'Warnings' que dicen:

"La variable oReader se utiliza antes de que se le haya asignado un valor.
Podria darse una excepción de referencia nula en tiempo de ejecucion.

Os pongo un ejemplo a continuacion, en donde estaria marcado como 'Warning'
el oReader.Close del Catch.

Cual seria la forma correcta de escribir esta funcion.

Muchas gracias por vuestra ayuda

Natalia



Public Function XXX(ByVal ..) As Boolean

Dim oReader As SqlClient.SqlDataReader

Try

..

oReader = oCommand.ExecuteReader()

oReader.Read()

.

oReader.Close()

Catch x As Exception

.

oReader.Close()

End Try

End Function
 

Leer las respuestas

#1 Luis Miguel Blanco
09/03/2006 - 12:11 | Informe spam
Hola CC

Por el código que adjuntas, entiendo que has declarado la variable oReader,
pero no la has instanciado.

El soporte de Intellisense en Visual Studio 2005 es todavía más potente si
cabe que en versiones anteriores del entorno, por ello, cuando declaras una
variable que va a contener un objeto, pero no has instanciado un objeto de la
clase correspondiente y lo has asignado a dicha variable, Intellisense te
avisa de dicha circunstancia.

Esta situación, que puede parecer banal, es un problema yo creo muy
frecuente, por lo cual, resulta de mucha ayuda que el entorno te avise de las
variables de objeto que no han sido asignadas, ya que tal y como está el
código de tu ejemplo, cuando en tiempo de ejecución llegues a la línea:

oReader = oCommand.ExecuteReader()

Se va a producir un error por no haber instanciado un objeto SqlDataReader
para esa variable. De ahí el aviso o warning de Intellisense, que nos viene
francamente bien creo yo 8-)

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"CC" wrote:

Hola a todos: estoy migrando un proyecto a 2005, y me encuentro con muchos
'Warnings' que dicen:

"La variable oReader se utiliza antes de que se le haya asignado un valor.
Podria darse una excepción de referencia nula en tiempo de ejecucion.

Os pongo un ejemplo a continuacion, en donde estaria marcado como 'Warning'
el oReader.Close del Catch.

Cual seria la forma correcta de escribir esta funcion.

Muchas gracias por vuestra ayuda

Natalia



Public Function XXX(ByVal ..) As Boolean

Dim oReader As SqlClient.SqlDataReader

Try

..

oReader = oCommand.ExecuteReader()

oReader.Read()

.

oReader.Close()

Catch x As Exception

.

oReader.Close()

End Try

End Function



Preguntas similares