Java intenta y captura el uso <Br /> Aunque el controlador de excepción predeterminado proporcionado por el sistema de tiempo de ejecución Java es útil para la depuración, generalmente desea manejar las excepciones usted mismo. Hay dos beneficios al hacer esto. Primero, le permite corregir errores. En segundo lugar, evita que el programa termine automáticamente. La mayoría de los usuarios están molestos (por decir lo menos) sobre la impresión de pistas de pila cuando el programa termina y cada vez que ocurre un error. Afortunadamente, esto es fácil de evitar.
Para prevenir y manejar un error de tiempo de ejecución, solo necesita poner el código que desea monitorear en un bloque de prueba. Siguiendo el bloque de prueba, incluida una cláusula de captura que especifica el tipo de error que desea detectar. Es muy simple completar esta tarea.
clase exc2 {public static void main (string args []) {int d, a; Impreso. ");} Catch (ArithmeticException e) {// Catch Divide-by-cero System.out.println (" División por cero ");} System.out.println (" Después de la declaración C ATCH "). ; El programa sale de la siguiente manera:
División por cero. Declaración de captura.
Tenga en cuenta que la llamada a println () en el bloque de try nunca se ejecuta. Una vez que se eleva la excepción, el control del programa se transfiere desde el bloque de try al bloque de captura. La ejecución nunca "regresa" desde el bloque de captura al bloque de try. Entonces, "esto no se imprimirá".
No se mostrará. Una vez que se ejecuta la declaración de captura, el control del programa continúa desde la siguiente línea de todo el mecanismo de prueba/captura.
Un intento y su declaración de captura forman una unidad. El alcance de la cláusula de captura se limita a la declaración definida antes de la declaración de prueba. Una declaración de captura no puede detectar la excepción planteada por otra declaración de try (a menos que sea un caso de declaración de prueba anidada).
Las declaraciones protegidas por Try deben estar dentro de un aparato ortopédico (es decir, deben estar en un bloque). No puedes usar probar solo.
El propósito de construir una cláusula de captura es resolver excepciones y continuar ejecutándose como si el error no ocurriera. Por ejemplo, en el siguiente programa, cada uno para el bucle se repite para obtener dos enteros aleatorios. Estos dos enteros están divididos por la otra parte respectivamente, y el resultado se usa para dividir 12345. El resultado final existe en a. Si una operación de división da como resultado un error de división cero, se capturará, el valor de A se establece en cero y el programa continúa ejecutándose.
// manejar una excepción y moverse. Import java.util.random; class handleError {public static void main (string args []) {int a = 0, b = 0, c = 0; ); {System.out.println ("División por cero");Mostrar una descripción de excepción
Sobrecarga el método ToString () (definido por el objeto), por lo que devuelve una cadena que contiene la descripción de la excepción. Puede mostrar la descripción de la excepción pasando un parámetro a la excepción en println (). Por ejemplo, el bloque de captura del programa anterior se puede reescribir como
Catch (arithmeticException e) {System.out.println ("Excepción:" + E); Cuando esta versión reemplaza la versión en el programa original, el programa se ejecuta bajo el intérprete Javajdk estándar, y cada error se divide por cero muestra el siguiente mensaje:
Excepción: java.lang.arithmeticexception: / por cero
Aunque no hay valores especiales en el contexto, la capacidad de mostrar una descripción de la excepción es valiosa en otros casos, especialmente cuando experimenta y depúes una excepción.
Uso de la declaración de captura múltiple de Java <Br /> En algunos casos, las excepciones múltiples pueden ser causadas por un solo segmento de código. Para manejar esta situación, puede definir dos o más cláusulas de captura, cada una de las cuales atrapa una excepción de un tipo. Cuando se plantea una excepción, cada cláusula de captura se verifica en secuencia, y la primera cláusula que coincide con el tipo de excepción se ejecuta. Cuando se ejecuta una declaración de captura, se omiten otras cláusulas, y la ejecución continúa desde el código después del bloque de try/captación. El siguiente ejemplo diseña dos tipos de excepción diferentes:
// Demuestra múltiples declaraciones de captura. Class Multicatch {public static void main (string args []) {try {int a = args.length; ; out .println ("Índice de matriz OOB:" + e);El programa se ejecuta en la condición inicial sin parámetros de línea de comandos, lo que resulta en una excepción cero dividida porque A es 0. Si proporciona un parámetro de línea de comando, sobrevivirá, estableciendo A a un valor mayor que cero. Pero causará la excepción de ArrayInDexuToFOf BoundSException porque la matriz de enteros C tiene 1 longitud y el programa intenta asignar un valor a C [42].
Aquí está el resultado del programa que se ejecuta en dos situaciones diferentes:
C:/> java multicatcha = 0DIVIDE por 0: java.lang.arithmeticException:/by cero después de try/capts blocks.c:/> java multicatch testArga = 1Array index OOB: j ava.lang.arrayintexOutOfBoundsexception después de try/captación de bloques.
Cuando usa una declaración de múltiples capturas, es importante recordar que las subclases de excepción deben usarse antes de cualquiera de sus clases de padres. Esto se debe a que el uso de la declaración de captura de la clase principal captará excepciones para el tipo y todos sus tipos de subclase. De esta manera, si la subclase está detrás de la clase principal, la subclase nunca llegará. Además, el código al que no se puede llegar en Java es un error. Por ejemplo, considere el siguiente procedimiento:
/* Este programa contiene un error. Una subclase debe venir antes de su superclase en una serie de declaraciones de captura. args []) {try {int a = 0; RithMeticException es una subclase de excepción.Si intenta compilar el programa, recibirá un mensaje de error de que la segunda declaración de captura no llegará porque la excepción ha sido atrapada. Debido a que AithmeticException es una subclase de excepción, la primera declaración de captura manejará todos los errores orientados a las excepciones, incluida ArithmeticException. Esto significa que la segunda declaración de captura nunca será ejecutada. Para modificar el programa, revertir el orden de las dos declaraciones de captura.