81 – Excepcións en Java – tentar / coller

Java ten un mecanismo de captura (captura) certos tipos de erros que só se poden detectar no programa de tempo de execución.

Os exemplos máis comúns que podemos nomear das excepcións:

  • tentar converter a unha cadea que non conteñen valores numéricos.
  • tentar dividir por cero.
  • Abra un ficheiro de texto inexistente ou que estea bloqueado por outra aplicación.
  • Conéctate cunha base de datos servidor que non está activo.
  • Acceder a cubertas de vectores e matrices fóra do rango.

A captura de excepción permítenos crear programas moito máis robustos e tolerantes aos fallos que ocorren En situacións escasas, pero se procede, temos un algoritmo alternativo para reaccionar a esa situación impedindo que o programa finalice a súa execución.

ve Fila un exemplo sen captura de excepcións e despois a sintaxe implementando a súa captura.

Problema:

Realizar a carga dun número enteiro por teclado e imprimir o seu cadrado.

Programa:

import java.util.Scanner;public class CuadradoNumero { public static void main(String ar) { Scanner teclado = new Scanner(System.in); int num; System.out.print("Ingrese un valor entero:"); num = teclado.nextInt(); int cuadrado = num * num; System.out.print("El cuadrado de " + num + " es " + cuadrado); }}

Se executamos o programa e o operador introduza unha cadea no canto dun número enteiro que se xerou unha excepción e o programa detense inmediatamente:

Excepcións Java sen capturar

O programa non executa máis instrucións despois da liña 8 do método principal. O nome de excepción xerado é informar: java.util.inputmismatchexception, é dicir, o nome da clase de excepción e o paquete que o contén é informado: java.util

O primeiro que podemos dicir é que isto Un tipo de excepción non son obrigatorios para capturalos, pero como vemos se o noso programa do programa é a miúdo mal e carga as cadeas en lugar de enteiros que o programa detense e require que volva executar.

Podemos implementar un programa máis robusto se capturamos a excepción InputMismatchException e informar ao usuario que debe introducir un enteiro obligatoriamente.

imos ver a sintaxe do mesmo programa pero capturar a excepción:

para atrapar as excepcións que debemos incluír nun intento de bloquear as instrucións que xeran excepcións, no noso caso o método “Nextint” da clase de escáner:

 try { System.out.print("Ingrese un valor entero:"); num = teclado.nextInt(); int cuadrado = num * num; System.out.print("El cuadrado de " + num + " es " + cuadrado); }

Cada intento bloque require que sexa seguido por un bloque de captura:

 catch (InputMismatchException ex) { System.out.println("Debe ingresar obligatoriamente un número entero."); }

Despois de que a cuestión de palabras clave está indicada entre parénteses o nome de calquera parámetro (no noso caso chamámolo ‘ex’) eo nome da excepción a capturar .

O bloque de captura normalmente non se executa excepto nos casos excepcionais que dentro do bloque de probas informa que a excepción foi despedida.

Agora se executamos o programa e o operador entra nunha cadea No canto dun enteiro, o noso programa non se detén, pero está informado polo tipo de erro que cometeu o usuario:

Excepcións Java captura

cando unha excepción desencadeado, as instrucións que son despois do método que o disparou non se executa:

 num = teclado.nextInt(); int cuadrado = num * num; System.out.print("El cuadrado de " + num + " es " + cuadrado);

As dúas instrucións despois de chamar ao método “Nextint” que funcionan se iso O método aumenta a excepción.

Agora podemos modificar o noso programa aínda máis para que non termine ata que carga un valor enteiro:

import java.util.InputMismatchException;import java.util.Scanner;public class CuadradoNumero { public static void main(String ar) { Scanner teclado = new Scanner(System.in); int num; boolean continua; do { try { continua = false; System.out.print("Ingrese un valor entero:"); num = teclado.nextInt(); int cuadrado = num * num; System.out.print("El cuadrado de " + num + " es " + cuadrado); } catch (InputMismatchException ex) { System.out.println("Debe ingresar obligatoriamente un número entero."); teclado.next(); continua = true; } } while (continua); }}

Si e Jecut esta variante programa, a fin de toda a carga non vai acabar ata que insira:

Deixa unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *