numero de error

03/07/2006 - 13:52 por Hugo Gsell | Informe spam
Hola.
Tengo 2 problemas.
1) cuando hao un try... catch ex exception ... end try... si se produce el
error (cath)
¿como recupero en nro de error?
2) Estoy trabajando en capas mi capa datos digamos que tiene 2 partes
una con las construcciones (INSER, DETETE, ETC) y una capa de mas bajo
nivel generica que es heredada por
la capa de datos de mi aplicación.
Cuando se produce un error... tengo un nro de error esto se produce
en realidad en mi capa base (generica) si hago que devuelva
un nro ¿me sirve para poder mostrar el mensaje de error? o esto depende
del objeto? haber si me explico si me devuelve el error digamos 23165464645
esto me sirve a mi para determinar el error y poder poner el mensaje del
error?¿ o debería hacer que la capa base devolviera el mensaje de error? ò
¿que me devuelva 'un objeto' digamos MIERROR donde pueda acceder a algo (un
vector, una base de datos o lo que sea) donde contenga los errores de mis
sistemas?
Hugo

Preguntas similare

Leer las respuestas

#1 SoftJaén
03/07/2006 - 14:37 | Informe spam
"Hugo Gsell" preguntó:

cuando hao un try... catch ex exception ... end try... si se produce el
error (cath)
¿como recupero en nro de error?



Hola:

No has indicado el espacio de nombres de datos con los cuales trabajas. De
todos modos, los tres espacios de nombres de System.Data (OleDb, SqlClient y
Odbc) disponen de sus correspondientes objetos Exception (OleDbException,
SqlException y OdbcException, respectivamente), los cuales tienen una
colección llamada «Errors», que la puedes recorrer fácilmente en un bucle.

Por ejemplo, si trabajas con el espacio de nombres OleDb, y deseas
interceptar una excepción producida por los objetos incluidos en dicho
espacio de nombres, el bloque Try ... End Try quedaría de la siguiente
manera:

Try
' Instrucciones a ejecutar

Catch ex As OleDbException

' Recorrermos la colección Errors
'
Dim n As Integer
For n = 0 To ex.Errors.Count - 1
MessageBox.Show(ex.Errors(n).Message)
Next

Catch ex As Exception
' Otras excepciones que se produzcan
MessageBox.Show(ex.Message)

Finally
' Instrucciones de cierre

End Try

Te hago la observación que, para atrapar las excepciones de un objeto en
concreto, deberás de escribir primero las instrucciones «Catch»
pertenecientes a dicho objeto, y en última posición, el objeto «Exception»
genérico, para interceptar otras excepciones generales que se puedan
producir, tal y como queda demostrado en el ejemplo expuesto.

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.
Respuesta Responder a este mensaje
#2 Eduardo A. Morcillo [MS MVP VB]
03/07/2006 - 17:09 | Informe spam
Ademas de lo que dice Enrique, quizas te simplifique las cosas en la
aplicacion si creas tus propias excepciones y las lanzas desde tu capa base.
Por ejemplo, creas un ClaveDuplicadaException y la lanzas en lugar de pasar
la excepcion OleDb o Sql:

...
Catch ex As OleDbException

Select Case ex.ErrorCode
Case xxxx
Throw New ClaveDuplicadaException()
...
End Select
...

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#3 Carlos Gómez
03/07/2006 - 18:27 | Informe spam
Si usas SQLServer, quizás te valga esto:

...
Generating Errors from Stored Procedures

Transact-SQL (T-SQL) provides a RAISERROR (note the spelling) function,
which you can use to generate custom errors and return them to the client.
For ADO.NET clients, the SQL Server .NET Data Provider intercepts these
database errors and translates them to SqlError objects.

The simplest way to use the RAISERROR function is to include the message
text as the first parameter, and then specify severity and state
parameters, as shown in the following code fragment.

RAISERROR( 'Unknown Product ID: %s', 16, 1, @ProductID )


In this example, a substitution parameter is used to return the current
product ID as part of the error message text. Parameter two is the message
severity, and parameter three is the message state.
More Information

* To avoid hard coding message text, you can add your own message to the
sysmessages table by using the sp_addmessage system stored procedure, or by
using the SQL Server Enterprise Manager. You can then reference the message
by using an ID passed to the RAISERROR function. The message IDs that you
define must be greater than 50,000, as shown in the following code
fragment.

RAISERROR( 50001, 16, 1, @ProductID )


* For full details relating to the RAISERROR function, look up RAISERROR
in the SQL Server Books Online index.
...

http://msdn.microsoft.com/library/e...frame=true


Desde Aguadulce - España
Carlos Gomez
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida