Java comunicado intento de captura detallada

En las aplicaciones prácticas, es extremadamente importante para el manejo de errores de cualquier programa difícil de conseguir cien por ciento perfecta, puede haber una gran cantidad de problemas desconocidos en el programa, así que asegúrese de diversos temas de desarrollo programa de tratamiento apropiado, y java manejo de excepciones mecanismo previsto puede ayudar al usuario a resolver mejor este problema. Java mecanismo de manejo de excepciones permite que el programa tiene una excelente tolerancia a fallos, que el programa sea más robusto.

manejo de excepciones de Java se logra a través de cinco palabras clave: intento, captura, tiro, tiros, y finalmente. tratar sentencia catch se utiliza para capturar y manejar una excepción, por último comunicado para el código (excepto en circunstancias especiales) debe llevarse a cabo bajo ninguna circunstancia, sentencia throw para lanzar una excepción, lanza sentencia se utiliza para declarar una excepción puede ocurrir.

En Java suele tratar instrucción catch para detectar la excepción y el mango. Sintaxis es la siguiente:

try {
    // 可能发生异常的语句
} catch(ExceptionType e) {
    // 处理异常语句
}

En la sintaxis anterior, el paquete puede plantear una declaración de excepción en el bloque try para capturar se puede producir la excepción. Después de la captura (Excepción clase) put coincidentes cláusula catch especifica el tipo de proceso de excepción puede generar excepción instancia de objeto de clase cuando se produce una anomalía.

Si se produce una excepción en el bloque try, entonces el objeto es se produce una excepción correspondiente, luego coger comunicado dependiendo del tipo del objeto de excepción se produce la captura y procesamiento. Después del procesamiento, el programa se saltará el resto de la declaración bloque try, una declaración de bloque para ponerse detrás de la primera declaración comienza la ejecución.

Si el bloque try se produce ninguna anomalía, el fin normal del bloque try, el bloque de enganche posterior se omite, el programa se pondrá al día la primera declaración después de la sentencia de bloque comienza la ejecución.

prestar atención: Try ... catch ... y si otra cosa no es lo mismo, los últimos aparatos ortopédicos try {} no se pueden omitir, a pesar de que sólo una línea de código en el bloque try, los apoyos no se pueden omitir. Del mismo modo es el bloque catch después de las llaves {} no se pueden omitir. Además, la variable declarada bloque try solo la variable local dentro del bloque de código, sólo es válida dentro del bloque try, otras partes no pueden acceder a la variable.

En la sintaxis del bloque de procesamiento anterior puede ser de salida correspondiente a la información de anomalía mediante el uso de los tres métodos siguientes.

	printStackTrace() 方法:指出异常的类型、性质、栈层次及出现在程序中的位置。
	
	getMessage() 方法:输出错误的性质。
	
	toString() 方法:给出异常的类型与性质。

Entrada de escribir el nombre, la edad y el género del programa de un estudiante, la solicitud no puede capturar la era digital, es la excepción. Tal como se usa en este documento, la declaración para intentar la captura lograda, de la siguiente manera:

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("---------学生信息录入---------------");
        String name = ""; // 获取学生姓名
        int age = 0; // 获取学生年龄
        String sex = ""; // 获取学生性别
        try {
            System.out.println("请输入学生姓名:");
            name = scanner.next();
            System.out.println("请输入学生年龄:");
            age = scanner.nextInt();
            System.out.println("请输入学生性别:");
            sex = scanner.next();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("输入有误!");
        }
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
    }
}

El código en la declaración principal () de captura método de tratar de capturar excepciones, la excepción puede ocurrir edad = scanner.nextlnt (); código en el bloque try, se especifica en la captura de captura de declaración de tipo de excepción Excepción, y llamar al objeto de excepción printStackTrace () información método excepción de salida. resultados de la ejecución se muestran a continuación.

---------学生信息录入---------------
请输入学生姓名:
张伟
请输入学生年龄:
120a
java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
输入有误!
姓名:张伟
年龄:0
    at text.text.main(text.java:19)

declaraciones de capturas múltiples

Si el bloque try, hay muchas declaraciones se produce una excepción, se produce una excepción y el tipo y número. Usted puede tratar después con una pluralidad de bloque catch. sintaxis del bloque de captura de múltiples es la siguiente:

try {
    // 可能会发生异常的语句
} catch(ExceptionType e) {
    // 处理异常语句
} catch(ExceptionType e) {
    // 处理异常语句
} catch(ExceptionType e) {
    // 处理异常语句
...
}

En el caso en el que una pluralidad de bloques de captura, cuando un bloque de captura a una excepción, el otro bloque de captura ya no coincidir.

prestar atención: Cuando hay una pluralidad de relación padre-hijo entre el atrapamiento de excepción, a la captura en la captura de la subclase de excepción general, recuperar la clase padre. Por lo que una subclase debe ser anormal en la clase padre antes, de lo contrario subclase no coger.

public class Test {
    public static void main(String[] args) {
        Date date = readDate();
        System.out.println("读取的日期 = " + date);
    }

    public static Date readDate() {
        FileInputStream readfile = null;
        InputStreamReader ir = null;
        BufferedReader in = null;
        try {
            readfile = new FileInputStream("readme.txt");
            ir = new InputStreamReader(readfile);
            in = new BufferedReader(ir);
            // 读取文件中的一行数据
            String str = in.readLine();
            if (str == null) {
                return null;
            }
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            Date date = df.parse(str);
            return date;
        } catch (FileNotFoundException e) {
            System.out.println("处理FileNotFoundException...");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("处理IOException...");
            e.printStackTrace();
        } catch (ParseException e) {
            System.out.println("处理ParseException...");
            e.printStackTrace();
        }
        return null;
    }
}

La corriente técnica de código de O (Input Output) leído por el / la cadena léame.txt Java I desde el archivo, y luego ser analizada fecha. Debido a que la tecnología Java I / O no se ha introducido, no nos centramos en el primer I / O detalles técnicos, se puede ver en la excepción llamada al método cuando sucedieron.

En el bloque try de línea de código de 12 a llamar al constructor puede ocurrir FileInputStream FileNotFoundException excepción. 16, línea de código llama al método readLine BufferedReader flujo de entrada () de un IOException puede ocurrir. IOException, FileNotFoundException excepción subclase debe excepción primera captura FileNotFoundException, ver el código en la línea 23, después de capturar una IOException, ver la línea 26 del código.

Si FileNotFoundException IOException y transposición orden de captura, captura la excepción FileNotFoundException no entrarán en el bloque, FileNotFoundException gestor de excepciones nunca se ejecuta. El código en la línea 29 con la excepción IOException ParseException FileNotFoundException y la relación entre padres e hijos no es anormal, el punto anormal puede ser colocado a la captura ParseException libremente.

Publicados 457 artículos originales · ganado elogios 94 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_45743799/article/details/104736497
Recomendado
Clasificación