Notas del estudio de JAVA 07-anormal

anormal

1. El concepto y sistema de
excepciones. Excepciones: situaciones anormales que ocurren durante la ejecución del programa, que eventualmente conducen a una parada anormal de la JVM.
Sistema
que se puede lanzar: Error: error grave, error que no se puede procesar
Excepción: excepción, programa después de la excepción El operador puede corregir mediante código para que el programa continúe ejecutándose

2. Manejo de excepciones

Lanzar una excepción
Función Throw :
lanzar una excepción especificada en el método especificado
Sintaxis:
throw new xxxException;
Nota:
1. La palabra clave throw debe estar escrita dentro del método
2. El nuevo objeto después de la palabra clave throw debe ser una subclase de Exception o Exception Objeto
3. La palabra clave Throw arroja el objeto de excepción especificado, debemos tratar con este objeto de excepción

public class Demo01 {
    
    
    public static void main(String[] args) {
    
    
        int[] array=null;
        int e=getElement(array,0);
        System.out.println(e);
    }
    public static int getElement(int[] array,int index){
    
    
        if(array==null){
    
    
            throw new NullPointerException("传递数组为空");
        }
        int res=array[index];
        return res;
    }   //运行期异常,默认交给JVM处理
}

3. Declarar excepción lanza
Declarar excepción: identifica el problema e informa a la persona que llama. Si el método arroja una excepción en tiempo de compilación a través de throw, pero no detecta la excepción, entonces debe declararse mediante throws y dejar que la persona que llama lo maneje.
Sintaxis:
modificador valor de retorno tipo nombre de método (parámetro) arroja excepción nombre de clase 1 { }
Nota:
1 La palabra clave .throws debe escribirse en la declaración del método
2. La excepción declarada después de la palabra clave throws debe ser Exception o una subclase de Exception
3. Si se lanzan múltiples objetos de excepción dentro del método, entonces también se deben incluir múltiples excepciones declarado después de throws; si los objetos de excepción múltiples lanzados tienen una relación hijo-padre, entonces puede declarar directamente la excepción padre
. 4. Llamar a un método que declara lanzar una excepción, debemos lidiar con la excepción declarada
o continuar usando los throws declaración para lanzar, entregar Handling al llamador del método y finalmente a la JVM
o intentar ... catch para manejar la excepción por sí mismo

public class Demo02 {
    
    
    public static void main(String[] args) throws FileNotFoundException {
    
    
        readFile("c:\\a.txt");
    }
    public static void readFile(String fileName) throws FileNotFoundException{
    
    
        if(!fileName.equals("c:\\a.txt")){
    
    
            throw new FileNotFoundException("传递路径不是c:\\a.txt");
        }
        System.out.println("路径没有问题,读取文件");
    }
}

4. Capturar la excepción try ... catch
Si ocurre una excepción, el programa se terminará inmediatamente, por lo que tenemos que manejar la excepción:
1. El método no lo maneja, y el llamador del método lo maneja (lanza)
2. Use try ... catch en el método Statements para manejar excepciones.
Catch exceptions: JAVA captura declaraciones específicas y puede manejar excepciones de una manera específica.
Sintaxis:
try {código que puede ser anormal
} catch (tipo de excepción e) {}
código para manejar excepciones
}
Nota:
1. Se pueden lanzar varios objetos de excepción en el
intento , luego se pueden usar múltiples capturas para manejar estos objetos de excepción . 2. Si ocurre una excepción en el intento, entonces la lógica de manejo de excepciones en el catch se ejecutará, y se ejecutará la captura. La lógica de procesamiento en, continuar ejecutando el código después de intentar ... captura; si no hay una excepción en la prueba, la lógica de procesamiento en la captura no se ejecutará y continuará ejecutar el código después de intentar ... atrapar

public class Demo02 {
    
    
    public static void main(String[] args){
    
    
        try{
    
    
            readFile("c:\\d.txt");
        }catch(FileNotFoundException e){
    
    
            System.out.println("传递文件路径错误");
        }
    }
    public static void readFile(String fileName) throws FileNotFoundException {
    
    
        if(!fileName.equals("c:\\a.txt")){
    
    
            throw new FileNotFoundException("传递路径不是c:\\a.txt");
        }
        System.out.println("路径没有问题,读取文件");
    }
}

Algunos métodos de visualización se definen en la clase
Throwable : public String getMessage (): obtenga la descripción de la excepción
public String toString (): obtenga el tipo y descripción de la excepción
public void printStackTrace (): imprima el seguimiento de pila de la excepción y enviarlo a la estación de control

public class Demo04 {
    
    
    public static void main(String[] args){
    
    
        try{
    
    
            readFile("c:\\d.txt");
        }catch(FileNotFoundException e){
    
    
            System.out.println(e.getMessage()); //传递路径不是c:\a.txt
            System.out.println(e.toString());   //java.io.FileNotFoundException: 传递路径不是c:\a.txt
            e.printStackTrace();    //全面信息
        }
    }
    public static void readFile(String fileName) throws FileNotFoundException {
    
    
        if(!fileName.equals("c:\\a.txt")){
    
    
            throw new FileNotFoundException("传递路径不是c:\\a.txt");
        }
        System.out.println("路径没有问题,读取文件");
    }
}

5. Finalmente bloque de código
Hay algunos códigos específicos que deben ejecutarse independientemente de si se produce una excepción o no
Nota:
1. finalmente no se puede usar solo
2. finalmente se usa generalmente para la liberación de recursos
Sintaxis:
try ... catch. ..finalmente

public class Demo03 {
    
    
    public static void main(String[] args){
    
    
        try{
    
    
            readFile("c:\\d.txt");
        }catch(FileNotFoundException e){
    
    
            System.out.println(e.getMessage()); //传递路径不是c:\a.txt
        }
        finally{
    
    
            System.out.println("资源释放");
        }
    }
    public static void readFile(String fileName) throws FileNotFoundException {
    
    
        if(!fileName.equals("c:\\a.txt")){
    
    
            throw new FileNotFoundException("传递路径不是c:\\a.txt");
        }
        System.out.println("路径没有问题,读取文件");
    }
}

Excepción de
la clase principal secundaria : si la clase principal arroja más de un campo, cuando la clase secundaria anula el método de la clase principal, generará la misma excepción que la clase principal o una subclase de la excepción de la clase principal o no lanzará una excepción
si el la clase padre no lo hace Cuando se lanza una excepción, la subclase no puede lanzar una excepción cuando anula el método de la clase padre. En este momento, la subclase solo puede capturar y manejar la excepción cuando se anula el método.
6. Las excepciones personalizadas no pueden ser declaradas .
Nota:
1. las excepciones personalizados están generalmente todos terminan con excepción
2. personalizado excepción debe heredar la clase de excepción RuntimeException o
excepción heredarán entonces la clase de excepción personalizada es una excepción en tiempo de compilación Si una excepción en tiempo de compilación es arrojado dentro. el método, la excepción debe ser manejada, o arroja O try ... catch
hereda RuntimeException: entonces la clase de excepción personalizada es una excepción de tiempo de ejecución, que no necesita ser manejada y se entrega a la máquina virtual

public class RegisterException extends Exception{
    
    
    public RegisterException(){
    
    
        super();
    }
    public RegisterException(String message){
    
    
        super(message);
    }
}
public class Demo05 {
    
    
    static String[] usernames={
    
    "Kobe","James","Jordan"};

    public static void main(String[] args) {
    
    
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username=sc.next();
        checkUsername(username);
    }
    public static void checkUsername(String username){
    
    
        for (String s : usernames) {
    
    
            if(s.equals(username)){
    
    
                try {
    
    
                    throw new RegisterException("用户已经被注册!");
                } catch (RegisterException e) {
    
    
                    e.printStackTrace();
                    return;
                }
            }
        }
        System.out.println("注册成功!");
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_44708714/article/details/106908340
Recomendado
Clasificación