es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo encontrar los tipos estáticos y dinámicos de Excepciones personalizadas.

Primero, hacia la tarea: Tengo que imprimir una cierta cadena que incluye el tipo dinámico y el tipo estático de mis excepciones personalizadas. En un “try and catch”, tengo que hacer lo mismo de diferentes formas al expresar la parte “catch”.

Estoy un poco confundido acerca de cómo imprimir los tipos estáticos y dinámicos. ¿También puedo trabajar sólo con “getClass()”?

Así que sólo para una explicación más precisa, aquí está mi código hasta ahora:

public void testCatch1(TimeStamp ts, Calendar cal, int test) throws Exception {
String s1 = "1 : ";
String s2 = "Exception : ";
String s3 = "UpdateTimeBeforeLastUpdateException ";
String s4 = "UpdateTimeInTheFutureException ";
try {
outsourced(ts, cal, 1);
}
catch(UpdateTimeBeforeLastUpdateException exc1) {
System.out.println(s1 + s2 + s3 + exc1);
}
catch(UpdateTimeInTheFutureException exc2) {
System.out.println(s1 + s2 + s4 + exc2);
}
}

public void testCatch2(TimeStamp ts, Calendar cal, int test) throws Exception {
String s1 = "2 : ";
String s2 = "Exception : ";
String s3 = "UpdateTimeBeforeLastUpdateException ";
String s4 = "UpdateTimeInTheFutureException ";
try {
outsourced(ts, cal, 2);
}
catch(UpdateTimeBeforeLastUpdateException | UpdateTimeInTheFutureException exc) {
System.out.println();
}
}

private void outsourced(TimeStamp ts, Calendar cal, int n) throws Exception {
switch (n) {
case 1:
ts.updateWithExc1(cal);
break;
case 2:
ts.updateWithExc2(cal);
break;
case 3:
ts.updateWithExc3(cal);
break;
case 4:
ts.updateWithExc4(cal);
break;
case 5:
ts.updateWithExc5(cal);
break;
}
<code>
there are 3 more methods to come but my main problem is just the</code>catch<code>and</code>outprint
part

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para imprimir el tipo estático de las excepciones personalizadas, se puede hacer referencia directamente al nombre de la clase en la instrucción de impresión. Por ejemplo, en el primer bloque catch, se puede imprimir:

    System.out.println(s1 + s2 + s3 + "UpdateTimeBeforeLastUpdateException");

    Para imprimir el tipo dinámico de la excepción (es decir, la instancia real de la excepción que se lanzó), se puede utilizar el método getClass() como mencionaste. Por ejemplo:

    System.out.println(s1 + s2 + s3 + exc1.getClass());

    Esto imprimirá algo como “UpdateTimeBeforeLastUpdateException” seguido de información adicional que indica el paquete y el nombre de la clase.

    En cuanto a las diferentes formas de expresar la parte catch, el segundo método testCatch2 demuestra el uso de una declaración multi-catch:

    catch(UpdateTimeBeforeLastUpdateException | UpdateTimeInTheFutureException exc)

    Esto te permite capturar múltiples tipos de excepciones en un único bloque catch, lo cual a veces puede hacer el código un poco más conciso. En este caso, ambas excepciones se manejan de la misma manera, por lo que no hace mucha diferencia, pero en otros casos puede ser útil.

Comments are closed.