异常的处理方式

发布时间:2023-05-15 09:34:51

1.基本介绍448

异常处理是当异常发生时,异常处理的方法。

2.异常处理方法

1)try-catch-finally

程序员在代码中捕获异常并自行处理

2)throws

将异常抛出,交给调用人(方法)处理,顶级处理人员是JVM

2.1示意图448

异常的处理方式_ci

异常的处理方式_System_02

3.try-异常处理catch

1)Java提供try和catch块来处理异常。try块用于包含可能出错的代码。catch块用于处理try块中的异常。程序中可以根据需要多try.catch块.

异常的处理方式_ci_03

3.1try-catch处理异常-注意事项01449

1)如发生异常,则不执行异常发生后的代码,直接进入catch块

2)如未发生异常,则按顺序执行try代码块,不会进入catch.

3)如果您想执行某个代码(如关闭连接、释放资源等。),无论是否有异常,请使用以下代码finaly{}

com中的代码.stulzl.trycatch_exception_detail.TryCatchDetail包
package com.stulzl.trycatch_exception_detail;//try-catch 异常处理方法-注意事项  449public class TryCatchDetail {    public static void main(String[] args) {        //快捷键ctrl+alt+t        try {            //String str = "中国";            String str = "123";            //解读            //1. 若发生异常,如果发生异常,后面的代码不会执行,直接进入 catch 块            //2. 如未发生异常,则按顺序执行 try 不进入代码块的代码块 catch            //3. 无论是否有异常,都要执行一段代码(例如关闭连接,释放资源等。)使用以下代码- finally            int a = Integer.parseInt(str);            System.out.println数字:“数字:”+a);        } catch (NumberFormatException e) {            System.out.println(“异常信息=”+e.getMessage());        }finally{            System.out.println(finally代码块被执行…);        }        System.out.println(继续进行程序…);    }}
3.2try-catch处理异常-注意事项02449

4)可以有多个catch语句,捕获不同的异常(不同的业务处理),要求父异常在后面,子异常在前面,比如(Exception在后面,Nulpointerexception在前面)。如果出现异常,只会匹配一个catch。

com中的代码.stulzl.trycatch_exception_detail02.包中TryCatchDetail02
package com.stulzl.trycatch_exception_detail02;//try-catch 异常处理方法-注意事项第四点  449//4)可以有多个catch语句,捕获不同的异常(不同的业务处理),要求父异常在后面,// 前面的子类异常,比如(Exception 在后,NullPointerException 前),////// 若发生异常,catchpublic只能匹配 class TryCatchDetail0 {    public static void main(String[] args) {        //解读        //1.如果 try 代码块可能有多个异常        //2.可以使用多个 catch 分别捕获不同的异常,相应处理        //3.要求子类异常写在前面,父类异常写在后面        try {            Person person = new Person();            person = null;            System.out.println(person.getName());//NullPointerException            int n1 = 10;            int n2 = 0;            int res = n1 / n2;//ArithmeticException        } catch (NullPointerException e) {            System.out.println(“空指针异常=” + e.getMessage());        } catch (ArithmeticException e) {            System.out.println(“算术异常=” + e.getMessage());        } catch (Exception e) {//父类异常,要写在后面            System.out.println(e.getMessage());        } finally {        }    }}class Person{    private String name;    public String getName(){        return name;    }}

5)try-finally可以一起使用,相当于没有捕获异常,所以程序会直接崩溃/退出。应用场景是执行代码,无论是否异常,都必须执行业务逻辑

com中的代码.stulzl.trycatch_exception_detail03.包中TryCatchDetail03
package com.stulzl.trycatch_exception_detail03;//try-catch 异常处理方法-注意事项第五点  449public class TryCatchDetail03 {    public static void main(String[] args) {        //5)try-finally可以一起使用,这种用法相当于没有捕获异常,所以程序会直接崩溃/退出。        try{            int n1 = 10;            int n2 = 0;            System.out.println(n1/n2);        }finally{            System.out.println(执行finaly..);        }        System.out.println(继续执行代码…);//程序直接在这里崩溃,因此不输出    }}
4.try-catch练习4.1练习1判断输出450代码.stulzl.trycatch_exception_exercise01.包中Trycatchercise01
package com.stulzl.trycatch_exception_exercise01;//try-catch练习 练习1 判断输出  450public class Trycatchercise01 {}class Exception010 {//类    public static int method() {        try {            String[] names = new String[3];//String[]数组,数组元素为空            if (names[1].equals("tom")) {//本句报Nullpointerexception异常,不执行后续代码                System.out.println(names[1]);            } else {                names[3] = "hspedu";            }            return 1;        } catch (ArrayIndexOutOfBoundsException e) {            return 2;        } catch (NullPointerException e) {//捕获异常            return 3;        } finally { //必须执行            return 4; //返回4,覆盖之前返回的3        }    }    public static void main(String[] args) {        System.out.println(method()); //输出4    }}
4.2练习2判断输出450代码的com.stulzl.trycatch_exception_exercise02.包中Trycatchercise02
package com.stulzl.trycatch_exception_exercise02;//try-catch练习 练习1 判断输出  450public class Trycatchercise02 {}class Exception02 {    public static int method() {        int i = 1;        try {            i++; //i = 2            String[] names = new String[3];            if (names[1].equals("tom")) {//空指针,抛出异常                System.out.println(names[1]);            } else {                names[3] = "hspedu";            }            return 1;        } catch (ArrayIndexOutOfBoundsException e) {            return 2;        } catch (NullPointerException e) {//捕获异常            return ++i; //i = 3        } finally {//必须执行            return ++i; //i = 4        }    }    public static void main(String[] args) {        System.out.println(method());//4    }}

异常的处理方式_ci_04

4.3练习3判断输出450代码的com.stulzl.trycatch_exception_exercise03.包中Trycatchercise03
package com.stulzl.trycatch_exception_exercise03;public class Trycatchercise03 {}class Exceptionexe01 {    public static int method() {        int i = 1;//i = 1        try {            i++;// i=2            String[] names = new String[3];            if (names[1].equals("tom")) { //空指针                System.out.println(names[1]);            } else {                names[3] = "hspedu";            }            return 1;        } catch (ArrayIndexOutOfBoundsException e) {            return 2;        } catch (NullPointerException e) {            // i = 3 => 保存临时变量 temp = 3;必须执行finally语句,因此,代码不会直接return            ///等待finally执行完成,继续return            return ++i;        } finally {/finally语句必须执行            ++i; //i = 4            System.out.println("i=" + i);// i = 4        }    }    public static void main(String[] args) {        System.out.println(method());// 3    }}

异常的处理方式_System_05

5.try-catch异常处理小结450

1)如果没有异常,则执行try块中的所有句子,而不执行catch块中的句子。如果有finally,最终需要执行finally中的句子

2)如果有异常,try块中的异常发生后,try块中剩余的句子将不再执行。如果有finally,将执行catch块中的句子,并最终执行finally中的句子!

上一篇 try-catch,throw和throws
下一篇 异常

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题