0% encontró este documento útil (0 votos)
27 vistas15 páginas

Tema 5 POO. Las Excepciones en Java

El manejo de excepciones en Java es crucial para gestionar eventos inesperados que interrumpen el flujo de un programa. Java clasifica las excepciones en verificadas y no verificadas, cada una con diferentes requisitos de manejo. Utilizar bloques try-catch permite a los desarrolladores capturar y responder a estas excepciones, mejorando la robustez y confiabilidad del código.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
27 vistas15 páginas

Tema 5 POO. Las Excepciones en Java

El manejo de excepciones en Java es crucial para gestionar eventos inesperados que interrumpen el flujo de un programa. Java clasifica las excepciones en verificadas y no verificadas, cada una con diferentes requisitos de manejo. Utilizar bloques try-catch permite a los desarrolladores capturar y responder a estas excepciones, mejorando la robustez y confiabilidad del código.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Manejo de Excepciones

en Java
INSTITUTO TECNOLÓGICO
SUPERIOR DE VALLADOLID

MTRO. LUIS ALBERTO BALAM M.

Introducción

Las excepciones en Java son eventos que ocurren durante la ejecución de un programa y
pueden interrumpir su flujo normal. Estas situaciones excepcionales pueden ser errores
inesperados o condiciones específicas que requieren una respuesta especial por parte del
programa. Las excepciones proporcionan un mecanismo para manejar y recuperarse de
situaciones imprevistas que pueden ocurrir durante la ejecución de un programa.

Java ofrece una variedad de excepciones predefinidas que cubren una amplia gama de
situaciones comunes. Estas excepciones pueden dividirse en dos categorías principales:
excepciones verificadas (checked exceptions) y excepciones no verificadas (unchecked
exceptions). Las excepciones verificadas deben ser declaradas en la firma del método o
capturadas mediante un bloque try-catch, mientras que las excepciones no verificadas no
tienen esta obligación.

Al capturar y manejar adecuadamente las excepciones, un programa en Java puede responder a


situaciones excepcionales de manera controlada y proporcionar mensajes de error significativos
para facilitar la depuración y el mantenimiento del código. Además, los desarrolladores también
tienen la capacidad de crear sus propias excepciones personalizadas, lo que les permite manejar
situaciones específicas definidas por ellos mismos.
El manejo de excepciones es una parte fundamental de la programación en Java, ya que permite
que los programas sean más robustos y capaces de enfrentar situaciones inesperadas de
manera adecuada. En los siguientes ejemplos y conceptos, exploraremos cómo utilizar y
manejar las excepciones en Java, así como las mejores prácticas para asegurar la estabilidad y
confiabilidad de nuestros programas.

Contenido

En Java, las excepciones son eventos que ocurren durante la ejecución de un programa y que
interrumpen el flujo normal del mismo. Estos eventos pueden ser errores o condiciones
excepcionales que requieren una respuesta especial por parte del programa. Las excepciones se
utilizan para manejar situaciones imprevistas o errores en tiempo de ejecución.

Java tiene una jerarquía de excepciones, donde todas las excepciones son subclases de la clase
base Throwable. A su vez, Throwable tiene dos subclases principales: Exception y Error. Las
excepciones se dividen en dos categorías principales: excepciones verificadas (checked
exceptions) y excepciones no verificadas (unchecked exceptions).

Excepciones verificadas (Checked Exceptions):


Estas excepciones deben ser declaradas en la firma del método o capturadas mediante un
bloque try-catch. Algunos ejemplos de excepciones verificadas en Java son:

IOException: Se lanza cuando ocurre un error de entrada o salida, como la lectura o


escritura de archivos.
ClassNotFoundException: Se lanza cuando una clase no puede ser encontrada por el
cargador de clases.
SQLException: Se lanza cuando ocurre un error al interactuar con una base de datos.

Excepciones no verificadas (Unchecked Exceptions):


Estas excepciones no requieren ser declaradas en la firma del método ni capturadas
obligatoriamente.
Algunos ejemplos de excepciones no verificadas en Java son:

ArithmeticException: Se lanza cuando ocurre un error aritmético, como la división por


cero.
NullPointerException: Se lanza cuando se intenta acceder a un objeto que es nulo.
ArrayIndexOutOfBoundsException: Se lanza cuando se intenta acceder a un índice
inválido en un arreglo.
ClassCastException: Se lanza cuando se intenta realizar una conversión no válida entre
tipos de datos.
IllegalArgumentException: Se lanza cuando se pasa un argumento inválido a un método.
NumberFormatException: Se lanza cuando se intenta convertir una cadena a un tipo
numérico y el formato no es válido.
IOException: Se lanza cuando ocurre un error de entrada o salida, como la lectura o
escritura de archivos.
FileNotFoundException: Se lanza cuando un archivo no puede ser encontrado.
EOFException: Se lanza cuando se alcanza el final de un archivo de manera inesperada.
SocketException: Se lanza cuando ocurre un error en una operación de socket.

Manejar las excepciones en java

En Java, el bloque try-catch se utiliza para manejar excepciones. Permite capturar y controlar
las excepciones que se lanzan durante la ejecución de un bloque de código. La sintaxis básica
del bloque try-catch en Java es la siguiente:

try {

// Bloque de código donde pueden ocurrir excepciones

} catch (TipoDeExcepcion1 excepcion1) {

// Manejo de excepcion1

} catch (TipoDeExcepcion2 excepcion2) {

// Manejo de excepcion2

} finally {

// Bloque opcional de código que se ejecuta siempre, sin importar si se lanzó una excepción

}
A continuación, te proporciono un ejemplo de uso del bloque try-catch en Java:

public class EjemploTryCatch {

public static void main(String[] args) {

try {

int resultado = dividir(10, 0);

[Link]("El resultado de la división es: " + resultado);

} catch (ArithmeticException e) {

[Link]("Ocurrió un error de aritmética: " + [Link]());

} finally {

[Link]("El bloque finally se ejecuta siempre, independientemente de las


excepciones.");

public static int dividir(int numerador, int denominador) {

return numerador / denominador;

En este ejemplo, se intenta realizar una división entre 10 y 0, lo cual genera una excepción
ArithmeticException debido a una división por cero. En el bloque try, se coloca el código que
puede generar una excepción. En este caso, la línea int resultado = dividir(10, 0); podría lanzar
una excepción.

Si se produce una excepción del tipo ArithmeticException, el control se transfiere al bloque


catch correspondiente donde se captura la excepción y se proporciona un manejo adecuado. En
este caso, se imprime un mensaje de error indicando que ocurrió un error de aritmética y se
muestra el mensaje de la excepción.
El bloque finally es opcional y se utiliza para especificar un código que se ejecuta siempre,
independientemente de si se lanzó o no una excepción. En este caso, se muestra un mensaje
indicando que el bloque finally se ejecuta siempre.

Recuerda que el bloque catch se puede tener uno o más bloques para manejar diferentes tipos
de excepciones. También se puede omitir el bloque finally si no es necesario en tu caso
particular.

Ejemplos de las principales excepciones en Java:

ArithmeticException:

public class Main {

public static void main(String[] args) {

int dividend = 10;

int divisor = 0;

try {

int result = dividend / divisor; // División por cero

[Link]("Resultado: " + result);

} catch (ArithmeticException e) {

[Link]("Error aritmético: " + [Link]());

NullPointerException:

public class Main {

public static void main(String[] args) {


String name = null;

try {

int length = [Link](); // Intenta acceder a un objeto nulo

[Link]("Longitud del nombre: " + length);

} catch (NullPointerException e) {

[Link]("Error de puntero nulo: " + [Link]());

ArrayIndexOutOfBoundsException:

public class Main {

public static void main(String[] args) {

int[] numbers = {1, 2, 3};

try {

int result = numbers[4]; // Intenta acceder a un índice inválido

[Link]("Elemento en la posición 4: " + result);

} catch (ArrayIndexOutOfBoundsException e) {

[Link]("Error de índice: " + [Link]());

}
ClassCastException:

public class Main {

public static void main(String[] args) {

Object obj = "Hola";

try {

Integer num = (Integer) obj; // Intenta realizar una conversión no válida

[Link]("Número: " + num);

} catch (ClassCastException e) {

[Link]("Error de tipo: " + [Link]());

IllegalArgumentException:

public class Main {

public static void main(String[] args) {

int age = -5;

try {

if (age < 0) {

throw new IllegalArgumentException("La edad no puede ser negativa");

[Link]("Edad: " + age);

} catch (IllegalArgumentException e) {
[Link]("Error de argumento: " + [Link]());

NumberFormatException:

public class Main {

public static void main(String[] args) {

String numberStr = "ABC";

try {

int number = [Link](numberStr); // Intenta convertir una cadena no numérica

[Link]("Número: " + number);

} catch (NumberFormatException e) {

[Link]("Error de formato numérico: " + [Link]());

IOException:

import [Link];

import [Link];

import [Link];

public class Main {


public static void main(String[] args) {

try {

FileReader fileReader = new FileReader("[Link]");

BufferedReader bufferedReader = new BufferedReader(fileReader);

String line;

while ((line = [Link]()) != null) {

[Link](line);

[Link]();

} catch (IOException e) {

[Link]("Error de E/S: " + [Link]());

FileNotFoundException:

import [Link];

import [Link];

import [Link];

public class Main {

public static void main(String[] args) {

try {

File file = new File("[Link]");


Scanner scanner = new Scanner(file);

while ([Link]()) {

String line = [Link]();

[Link](line);

[Link]();

} catch (FileNotFoundException e) {

[Link]("Archivo no encontrado: " + [Link]());

EOFException:

import [Link];

import [Link];

import [Link];

import [Link];

public class Main {

public static void main(String[] args) {

try {

FileInputStream fileInputStream = new FileInputStream("[Link]");

DataInputStream dataInputStream = new DataInputStream(fileInputStream);


while (true) {

int value = [Link]();

[Link](value);

} catch (EOFException e) {

[Link]("Fin de archivo alcanzado");

} catch (IOException e) {

[Link]("Error de E/S: " + [Link]());

SocketException:

import [Link];

import [Link];

import [Link];

public class Main {

public static void main(String[] args) {

try {

Socket socket = new Socket("[Link]", 80);

// Realizar operaciones con el socket

[Link]();

} catch (SocketException e) {

[Link]("Error de socket: " + [Link]());

} catch (IOException e) {
[Link]("Error de E/S: " + [Link]());

Excepciones en java relacionadas al uso de arreglos.

En Java, existen varias excepciones relacionadas con el uso de arreglos. Aquí te presento
algunas de las excepciones más comunes:

ArrayIndexOutOfBoundsException: Se produce cuando se intenta acceder a un índice inválido o


fuera de los límites del arreglo. Por ejemplo:

int[] array = new int[5];

[Link](array[10]); // Lanza ArrayIndexOutOfBoundsException

NullPointerException: Se produce cuando se intenta acceder o manipular un arreglo que es null.


Por ejemplo:

int[] array = null;

[Link](array[0]); // Lanza NullPointerException

NegativeArraySizeException: Se produce cuando se intenta crear un arreglo con un tamaño


negativo. Por ejemplo:

int[] array = new int[-5]; // Lanza NegativeArraySizeException

ArrayStoreException: Se produce cuando se intenta almacenar un elemento de un tipo


incompatible en un arreglo. Por ejemplo:

Object[] array = new String[5];

array[0] = 10; // Lanza ArrayStoreException

Estas son solo algunas de las excepciones relacionadas con el uso de arreglos en Java. Cada
excepción tiene su propio propósito y se lanza en situaciones específicas. Es importante manejar
adecuadamente estas excepciones para garantizar un comportamiento controlado y seguro en
la manipulación de arreglos.
A continuación se incluye un ejemplo de un programa en Java que almacena valores en un
arreglo de acuerdo al tamaño especificado por el usuario y utiliza excepciones relacionadas con
el uso de arreglos:

import [Link];

public class ArrayExample {

public static void main(String[] args) {

Scanner scanner = new Scanner([Link]);

try {

[Link]("Ingrese el tamaño del arreglo: ");

int size = [Link]();

if (size <= 0) {

throw new IllegalArgumentException("El tamaño del arreglo debe ser mayor que cero.");

int[] array = new int[size];

for (int i = 0; i < size; i++) {

[Link]("Ingrese el valor para el índice " + i + ": ");

array[i] = [Link]();

}
[Link]("Valores almacenados en el arreglo:");

for (int i = 0; i < size; i++) {

[Link]("Índice " + i + ": " + array[i]);

} catch (IllegalArgumentException e) {

[Link]("Error: " + [Link]());

} catch (ArrayIndexOutOfBoundsException e) {

[Link]("Error: Índice de arreglo inválido.");

} catch (Exception e) {

[Link]("Error: Ocurrió un problema inesperado.");

} finally {

[Link]();

Conclusión
En conclusión, el manejo de excepciones es una parte esencial de la programación en Java. Las
excepciones proporcionan un mecanismo poderoso para detectar, señalar y manejar situaciones
excepcionales que pueden surgir durante la ejecución de un programa.

Al utilizar excepciones de manera efectiva, podemos mejorar la confiabilidad y robustez de


nuestro código, facilitando la detección y el manejo de errores.

Java ofrece una amplia gama de excepciones predefinidas que cubren diversas situaciones
comunes, como errores de E/S, aritmética, punteros nulos y más, demás, los desarrolladores
tienen la flexibilidad de crear sus propias excepciones personalizadas para abordar situaciones
específicas que puedan surgir en sus aplicaciones.

Al capturar y manejar adecuadamente las excepciones, podemos controlar el flujo del programa,
proporcionar mensajes de error significativos y realizar acciones de recuperación apropiadas,
esto nos permite implementar lógica de manejo de errores eficiente y facilita el mantenimiento
y la depuración del código.

El manejo de excepciones no solo implica la detección y el manejo de errores, sino también la


prevención y el diseño adecuado de código para evitar situaciones excepcionales siempre que
sea posible.

Al planificar y estructurar nuestros programas de manera cuidadosa, podemos minimizar la


aparición de excepciones y crear código más robusto y confiable.

También podría gustarte