Discussion:
TRY CATCH
(demasiado antiguo para responder)
Jordi Sanchez
hace 19 años
Permalink
Hola,

Cuando uso CATCH ex as exception...
- como puedo saber el numero de este error?? o un identificador?
ya se q puedo hacer AS SQLexception, FormatException....

como antes tenia en VB6
''''''''''''''''''''''''''''''''''''''''''''
RutinaErrores:
N_ERROR = err.Number
DESC_ERR = err.Description

Gracias,
Alberto Poblacion
hace 19 años
Permalink
Post by Jordi Sanchez
Cuando uso CATCH ex as exception...
- como puedo saber el numero de este error?? o un identificador?
ya se q puedo hacer AS SQLexception, FormatException....
como antes tenia en VB6
''''''''''''''''''''''''''''''''''''''''''''
N_ERROR = err.Number
DESC_ERR = err.Description
Puedes obtener un string que indique el tipo de la excepción por medio de
ex.GetType().FullName, que te devolverá un string diciendo si es un
SqlException, FormatException, etc. No están numeradas.
El equivalente del err.Description es ex.Message.
Robinson.Moscoso
hace 19 años
Permalink
puedes usuar tambien

dim elerror as string = ex.toString


y te imprime toda la informacion de la excepcion en al variable elerror
Post by Jordi Sanchez
Hola,
Cuando uso CATCH ex as exception...
- como puedo saber el numero de este error?? o un identificador?
ya se q puedo hacer AS SQLexception, FormatException....
como antes tenia en VB6
''''''''''''''''''''''''''''''''''''''''''''
N_ERROR = err.Number
DESC_ERR = err.Description
Gracias,
SoftJaén
hace 19 años
Permalink
Post by Jordi Sanchez
Cuando uso CATCH ex as exception...
- como puedo saber el numero de este error?? o un identificador?
ya se q puedo hacer AS SQLexception, FormatException....
Hola, Jordi:

Si lo deseas, puedes continuar utilizando en tus proyectos de Visual Basic
.net, el objeto «Err» de Visual Basic clásico, pero te aconsejaría que en
tus nuevas aplicaciones .net, dejaras a un lado el respetado objeto «Err», y
te acostumbraras al control estructurado de excepciones.

Digamos que en .net «no existen los errores», al menos, tal y como se
conciben en Visual Basic clásico, donde activando una rutina de control de
errores, podíamos obtener la descripción y el número de error, y éste
último, dependiendo del componente COM utilizado, lo podíamos obtener como
un valor entero largo HRESULT, o como cualquier valor que le pareciera al
creador del componente. En .net es distinto. Aquí lo que se interceptan son
excepciones producidas, que si bien se asemejan a los errores en cuanto a
que nos indican que algo no funciona del todo bien, aquéllas no nos
devuelven un valor cero, entero o negativo, sino que nos proporciona un
objeto Exception apropiado al tipo de excepción producida, y esto entiendo
que se hizo así para unificar los criterios de devolución de errores,
permitiendo la comunicación, o interoperabilidad, entre todos los lenguajes
.net existentes.

Dependiendo de las operaciones que estés ejecutando, puedes declarar bloques
«Catch» que intercepten una excepción concreta. Por ejemplo, si trabajas con
el proveedor de datos .net para SQL Server, puedes definir un bloque «Catch»
de la clase «SqlExcetion», la cual dispone de una propiedad llamada «Errors»
que contiene una colección de uno o varios objetos «SqlError». Este último
objeto es el que dispone de una propiedad llamada «Number», que como su
nombre indica, nos devuelve un número que identifica el tipo de error
producido:

Try

' Instrucciones a ejecutar

Catch ex As SqlException
' Excepciones producidas por el proveedor SqlClient
'
Dim err As ErrObject

' Recorremos la colección Errors
For Each err In ex.Errors
MessageBox.Show("Número de error: " & err.Number & _
ControlChars.CrLf & _
"Descripción: " & err.Description)
Next

Catch ex As Excepcion
' Otro tipo de excepciones generales

Finally

End Try

En fin, espero que la explicación haya servido, para que en tu código fuente
utilices el control estructurado de excepciones.

Un saludo
--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
SoftJaén
hace 19 años
Permalink
Post by SoftJaén
Dim err As ErrObject
' Recorremos la colección Errors
For Each err In ex.Errors
MessageBox.Show("Número de error: " & err.Number & _
ControlChars.CrLf & _
"Descripción: " & err.Description)
Next
Bueno, aunque creo que se sobrentiende, el objeto «ErrObject» pertenece al
espacio de nombres Microsoft.VisualBasic, y por tanto, dispone de las
clásicas propiedades «Number» y «Description».

El objeto .net apropiado que deberás de declarar, es el objeto «SqlError»
(obviamente, si trabajas con el proveedor .net de SQL Server), el cual sí
dispone de una propiedad «Number», pero no de una propiedad
«Description»; en su lugar, deberás de llamar a la propiedad «Message»:

Dim err As SqlError

For Each err In ex.Errors
MessageBox.Show("Número de error: " & err.Number & _
ControlChars.CrLf & _
"Descripción: " & err.Message)
Next
--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Jordi Sanchez
hace 19 años
Permalink
Hola, muchas gracias por tu explicación

La verdad, hasta ahora no he empezado con el .net y todavía hay
conceptos como estos en los que siempre pienso en vb6.

un saludo,
...
Continúe leyendo en narkive:
Loading...