Java reconoce excepciones (simula la excepción de inicio de sesión del rey)

1. Excepción: Error de programa lanzado en tiempo de ejecución

El tiempo de ejecución significa que el programa se ha compilado para obtener el archivo de clase y luego se produce un error cuando la JVM lo ejecuta.

(archivo fuente javac -> *.java -> proceso de compilación *.class)

1. División por cero excepción

2. Excepción de puntero nulo

3. Array subíndice fuera de los límites

dos,

Dos formas de evitar excepciones:

LBYL: totalmente comprobado antes de la operación

EAFP: Hágalo primero, luego corríjalo cuando encuentre errores

La sintaxis básica de la excepción: (simular el proceso de ejecución del juego de inicio de sesión del rey)

//模拟王者登录游戏的执行过程
        try {
            //存放所有可能出现异常的代码
            login();
            loadGame();
            chooseHero();
            biubiubiu();
        }
        //catch 捕获相应的异常 {}内是出现相应异常的处理方式
        catch (登陆异常){}
        catch (载入游戏异常){}
        catch (选取英雄异常){}
        catch (正常游戏时出现的异常){}
        
        finally{
            //不是强制书写
            //无论是否发生异常,都会执行finally代码块,一般执行资源的释放
            //关闭资源的处理
        }

1. Use try..catch.. para manejar excepciones

Pon el código que puede reportar un error en try y catch it con catch.Cuando ocurre una excepción, no afecta el código normal.

 2. Múltiples bloques de captura

Escriba varias capturas si hay varias excepciones.

 3. Utilice la excepción de clase principal de la excepción para capturar la excepción (cuando hay muchas excepciones en el programa y no está claro qué tipo de excepción)

Todos los objetos de excepción se pueden aceptar y convertir a objetos de excepción.

- No recomendado, no se puede solucionar el problema

 4. Salida de error sobre excepción

En Java, todo es un objeto, un puntero nulo, una matriz fuera de los límites, Excepción -> es una excepción, cuando una clase genera una excepción, la JVM construirá una excepción correspondiente (clase de excepción correspondiente) y la pasará al programa .

 5. Con respecto a los bloques de código finalmente: ¡bloques de código que se ejecutarán independientemente de si se genera una excepción!

 En cuanto al valor de retorno de la excepción

Una vez que finalmente tiene un valor de retorno, el valor de retorno equivalente a probar y atrapar no es válido.

Sin embargo, generalmente no se recomienda escribir el valor de retorno en forma final.

 6. Cadena de llamadas sobre excepciones

La excepción continuará pasando a lo largo de la cadena de llamadas hasta que la excepción sea capturada y manejada.Si el proceso de llamada no maneja la excepción, la excepción finalmente se lanza a la JVM y el programa finaliza.

7. Nueva interfaz de apagado automático JDK7 

Una vez que una clase implementa la interfaz AutoCloseable, significa que la clase tiene la capacidad de cerrarse automáticamente; declare que el método de cierre se llama automáticamente en el bloque de código de prueba.

8.—Agrupar palabras clave

throws: utilizado en declaraciones de métodos, está claro que el método puede generar la excepción, pero esta excepción no se maneja y se devuelve a la persona que llama para su procesamiento.

Throw: se usa dentro de un método para generar artificialmente un objeto de excepción y lanzarlo.

 

3. Arquitectura de excepción

Error: se refiere al error interno del programa. Este tipo de error no puede ser detectado ni manejado por nuestros programadores. Una vez que ocurre un error de error, el programa solo puede informar al usuario que ocurrió un error y el programa sale directamente.

StackOverflowError: error de desbordamiento de pila: generalmente ocurre cuando la cadena de llamadas recursivas es demasiado profunda y la recursividad no tiene salida

OutOfMemoryError: error de desbordamiento del montón

 El sistema de excepciones de Java se divide en dos categorías.

1. Anomalías no verificadas: el cuadro azul en la figura de la izquierda y sus subclases pertenecen a anomalías no verificadas. Todas las excepciones no verificadas no obligan al programa a usar un bloque try catch. Error y RuntimeException (excepción de tiempo de ejecución, puntero nulo, conversión de tipo, matriz fuera de los límites) y sus subclases son excepciones no verificadas

2. Excepciones comprobadas: las casillas rojas y sus subclases en la imagen de la izquierda son excepciones comprobadas, excepto las excepciones no comprobadas, son excepciones comprobadas y se debe mostrar el uso de try. . captura. . Manejo de excepciones, o lanzamientos. Las excepciones que no sean Error y RuntimeExcpetion y sus subclases son excepciones comprobadas y deben manejarse explícitamente.

3. Clase de excepción personalizada: durante el desarrollo del programa, debe haber algunos errores relacionados con negocios específicos. Es imposible que JDK proporcione las clases de excepción correspondientes para tales errores. La clase de excepción definida, si el usuario debe forzar el manejo de excepciones, hereda la clase principal Exception - excepción marcada Si el usuario no necesita mostrar la excepción de procesamiento, herede la clase principal RuntimeException - excepción no verificada

4. [Escriba un código sobre el manejo de excepciones de inicio de sesión]

package object_oriented.exception;

import java.util.Scanner;

public class Login {
    public static String USER="浩民";
    public static String PASSWORD="123456";

    public static void main(String[] args) {
        try {
            login();
            System.out.println("登陆成功!!");
        }catch (UserNameException e){
            e.printStackTrace();
        }catch (PasswordException e){
            e.printStackTrace();
        }
    }

    //throws 用在方法声明上,明确表示该方法可能会产生异常,但是不处理该异常,抛给调用者处理
    private static void login() throws UserNameException{
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入用户名:");
        String user=scanner.next();
        System.out.println("请输入用户名密码:");
        String password=scanner.next();
        if(!USER.equals(user)){
            //throw 用在方法内部,人为产生异常对象并抛出
            throw new UserNameException("用户名错误!");
        }
        if(!PASSWORD.equals(password)){
            throw new PasswordException("用户名密码错误!");
        }
    }
}

//用户名异常
class UserNameException extends Exception{
    public UserNameException(String msg){
        super(msg);
    }
}

//用户名密码异常
class PasswordException extends RuntimeException{
    public PasswordException(String msg){
        super(msg);
    }
}

Supongo que te gusta

Origin blog.csdn.net/m0_62218217/article/details/122644732
Recomendado
Clasificación