SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => VB .NET => Mensaje iniciado por: Vortice en Viernes 20 de Junio de 2008, 22:59

Título: Controlar Excepcion Especifica
Publicado por: Vortice en Viernes 20 de Junio de 2008, 22:59
Camaradas yo otra vez…saludines…
Estoy tratando de controlar una excepción q me da un error al duplicar una clave (Primary Key), me da el siguiente error.

Violation of PRIMARY KEY constrain "PK_ALUMNOS_1".cannot insert duplicate key in object "dbo.Alumnos".
Y quiero q en vez de darme este error entregar un mensaje, se q esto se hace con la clausula When en el Catch ex As Exception del Try, pero q le digo después del  When ahí estoy pegado…
Ojala puedan ayudarme.
Gracias….Foreros  y público en general...
Título: Re: Controlar Excepcion Especifica
Publicado por: Mollense en Sábado 21 de Junio de 2008, 01:35
Yo para eso uso un método estático:

Código: Text
  1. public static void mostrarCartelDeError(string strErrorActual)
  2.         {
  3.             int intCodigoDeError=0;
  4.             string strMensajeDeError="";
  5.             if (strErrorActual.IndexOf(',') != -1)
  6.             {
  7.                 try
  8.                 {
  9.                     intCodigoDeError = Convert.ToInt32(strErrorActual.Split(',')[0]);
  10.                     strMensajeDeError = strErrorActual.Split(',')[1];
  11.                 }
  12.                 catch
  13.                 {
  14.                     intCodigoDeError = -1;
  15.                 }
  16.             }
  17.  
  18.             switch (intCodigoDeError)
  19.             {
  20.                 case 2627:
  21.                     strErrorActual = "Ya existe un proceso de....";
  22.                     break;
  23.                 case 547:
  24.                     strErrorActual = "El registro está siendo utilizado.\nNo puede ser eliminado...";
  25.                     break;
  26.                 case 15025: case 15023:
  27.                     strErrorActual = "El usuario ya está registrado...";
  28.                     break;
  29.                 case 15151:
  30.                     strErrorActual = "El usuario no existe...";
  31.                     break;
  32.                     .
  33.                     .
  34.                     .
  35.                     .
  36.                     .
  37.                 default:
  38.                     strErrorActual = "Ha ocurrido un error interno, contacte con el desarrollador";
  39.                     break;
  40.             }
  41.  
  42.             MessageBox.Show(strErrorActual, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  43.         }
  44.  

y lo uso así:

Código: Text
  1.             catch (Exception ex)
  2.             {
  3.                 ClaseManejadorDeMensajes.mostrarCartelDeError(ex.Message);
  4.             }
  5.  

Espero que puedas adaptarlo para lo que vos necesitás.

Un saludo :beer: