L'étude JAVA note 07-anormal

anormal

1. Le concept et le système d'
exceptions. Exceptions: situations anormales qui se produisent pendant l'exécution du programme, qui conduisent éventuellement à un arrêt anormal de la JVM.
Système pouvant être lancé:
Erreur: erreur grave, erreur qui ne peut pas être traitée
Exception: exception, programme après l'exception L'opérateur peut corriger au moyen de code pour que le programme continue à s'exécuter

2. Traitement des exceptions

Lancer une exception
Fonction Throw :
lancer une exception spécifiée dans la méthode spécifiée
Syntaxe:
throw new xxxException;
Remarque:
1. Le mot clé throw doit être écrit à l'intérieur de la méthode
2. Le nouvel objet après le mot clé throw doit être une sous-classe de Exception ou Exception Object
3. Le mot clé Throw lance l'objet d'exception spécifié, nous devons traiter cet objet d'exception

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. Declare exception lance
Declare exception: identifiez le problème et signalez-le à l'appelant. Si la méthode lève une exception lors de la compilation via throw, mais n'attrape pas l'exception, elle doit être déclarée via throws et laisser l'appelant la gérer.
Syntaxe:
modificateur return value type method name (paramètre) throws exception class name 1 { }
Remarque:
1 Le mot-clé .throws doit être écrit au niveau de la déclaration de méthode
2. L'exception déclarée après le mot- clé throws doit être Exception ou une sous-classe de Exception
3. Si plusieurs objets d'exception sont levés dans la méthode, plusieurs exceptions doivent également être déclaré après les levées; Si les objets d'exception multiples lancés ont une relation enfant-parent, vous pouvez directement déclarer l'exception parent
. 4. Appelez une méthode qui déclare lever une exception, nous devons traiter l'exception déclarée
ou continuer à utiliser les levées instruction à lancer, remettre Handling à l'appelant de la méthode, et enfin à la JVM
ou try ... catch pour gérer l'exception par elle-même

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. Attraper l'exception try ... catch
Si une exception se produit, le programme se terminera immédiatement, nous devons donc gérer l'exception:
1. La méthode ne la gère pas et l'appelant de la méthode la gère (lève)
2. Utilisez try ... catch dans la méthode Instructions pour gérer les exceptions.
Catch exceptions: JAVA capture les instructions ciblées et peut gérer les exceptions d'une manière spécifiée.
Syntaxe:
try {code qui peut être anormal
} catch (exception type e) {}
code pour la gestion des exceptions
}
Remarque:
1. Plusieurs objets d'exception peuvent être lancés lors de l'
essai , puis plusieurs captures peuvent être utilisées pour gérer ces objets d'exception . 2. Si une exception se produit dans l'essai, la logique de gestion des exceptions dans l'attrape être exécuté, et la capture sera exécutée. La logique de traitement dans, continuez à exécuter le code après try ... catch; s'il n'y a pas d'exception dans la tentative, alors la logique de traitement dans catch ne sera pas exécutée, et continuer à exécuter le code après essayer ... catch

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("路径没有问题,读取文件");
    }
}

Certaines méthodes d'affichage sont définies dans la classe Throwable:
public String getMessage (): récupère la description de l'exception
public String toString (): récupère le type et la description de l'exception
public void printStackTrace (): affiche la trace de la pile de l'exception et le sortir à la station de contrôle

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. Enfin bloc de code
Certains codes spécifiques doivent être exécutés indépendamment du fait qu'une exception se produise ou non
Remarque:
1. finalement ne peut pas être utilisé seul
2. est finalement généralement utilisé pour la libération des ressources
Syntaxe:
try ... catch. ..enfin

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("路径没有问题,读取文件");
    }
}

Exception de classe parent enfant:
Si la classe parent lève plus d'un champ, lorsque la classe enfant remplace la méthode de classe parent, elle lèvera la même exception que la classe parent ou une sous-classe de l'exception de classe parent ou ne lèvera pas d'exception
si le la classe parente ne le fait pas Lorsqu'une exception est levée, la sous-classe ne peut pas lever d'exception lorsqu'elle remplace la méthode de la classe parente. À ce stade, la sous-classe ne peut capturer et gérer l'exception que lorsque la méthode est remplacée.
6. Les exceptions personnalisées ne peuvent pas être déclarées .
note:
1. exceptions personnalisées sont généralement Ils terminent tous avec l' exception
2. doit classe d'exception personnalisée Hériter exception ou RuntimeException
Hériter exception: alors la classe d'exception personnalisée est une exception à la compilation Si une exception à la compilation est jeté à l' intérieur. la méthode, l'exception doit être gérée, ou lève Soit try ... catch
hérite de RuntimeException: alors la classe d'exception personnalisée est une exception d'exécution, qui n'a pas besoin d'être gérée et est transmise à la machine virtuelle

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("注册成功!");
    }
}

Je suppose que tu aimes

Origine blog.csdn.net/qq_44708714/article/details/106908340
conseillé
Classement