什么是异常?

不正常的,会影响程序的正常执行流程。

例如下面的程序

public static void main(String[] args) {
        TestDemo1 t = new TestDemo1();
        t.a();
        System.out.println("其它程序代码");
    }
    public void a() {
        b();
    }
    public void b() {
        int x =5;
        int y = 0;
        int z = x / y;
        System.out.println("结果是:"+z);
    }

Day12 Java异常处理与程序调试

 

Error:错误

 JVM自身的错误,程序员不能处理。

Exception:异常

受检异常(非运行时异常)

程序员必须进行异常处理,否则编译通不过

运行时异常

RuntimeException类和它的子类。

程序员可以不做处理。改代码。

也可以处理,处理了程序可以不中断。

 Day12 Java异常处理与程序调试

 

异常处理机制

 Java的异常处理是通过5个关键字来实现的:try、catch、finally、throw和throws。

try...catch基本语法

可以添加多个catch

public void method() {
        try {
            //代码段(此处可能会产生异常)
        }catch(异常类型 ex) {
            //对异常进行处理的代码段
        }
        //代码段
    }

try...catch三种情况

1.没有引发异常,不执行catch块

2.异常类型匹配,可以处理,程序不会中断,执行catch块,其他代码正常执行

3.异常类型不匹配,程序中断,不执行catch块

try...catch...catch...

public void method() {
        try {
            //代码段(此处可能会产生异常)
        }catch(异常类型 ex1) {
            //对异常进行处理的代码段
        }catch(异常类型 ex2) {
            //对异常进行处理的代码段
        }
        //代码段
    }

多重catch块的好处

 对不同的异常,进行不同的处理

为了避免漏掉异常,在最后catch块中使用Exception父类。

但是,遵循规则:

1.先子类后父类。

2.先普通后特殊。

 try...catch...catch...finally...

保证一些资源释放的代码一定会执行

public void method() {
        try {
            //代码段(此处可能会产生异常)
        }catch(异常类型 ex1) {
            //对异常进行处理的代码段
        }catch(异常类型 ex2) {
            //对异常进行处理的代码段
        }finally{
              //此代码块一定会执行,无论是否引发异常
              System.out.println("此代码块一定会执行");
        }
        //代码段
    }
 1 public class TestException2 {
 2     
 3     public void showArr() {
 4         Scanner input = new Scanner(System.in);
 5         int [] arr = new int[5];
 6         System.out.println("赋值:");
 7         try {
 8             for(int i = 0; i < arr.length; i++) {
 9                 arr[i] = input.nextInt();
10             }
11             Arrays.stream(arr).forEach(System.out::println);
12         } catch (InputMismatchException e) {
13             System.out.println("赋值出错了");
14             e.printStackTrace();
15         } catch (ArrayIndexOutOfBoundsException e) {
16             System.out.println("赋值出错了");
17             e.printStackTrace();
18         } catch (Exception e) {
19             System.out.println("赋值出错了");
20             e.printStackTrace();
21         } finally {
22             input.close();//释放资源
23             System.out.println("程序运行结束");
24         }
25     }
26     public static void main(String[] args) {
27         new TestException2().showArr();
28         
29     }
30 
31 }
View Code

相关文章:

  • 2021-05-20
  • 2022-12-23
  • 2021-06-28
  • 2021-12-06
  • 2021-10-09
  • 2021-11-12
  • 2021-11-10
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-04-10
  • 2021-04-11
  • 2021-05-29
  • 2022-12-23
相关资源
相似解决方案