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