Java的try-catch异常处理
说明:
1)Java提供try和catch块来处理异常,try块用于包含可能出错的代码。catch块用于处理try块中发生的异常。可以根据需要在程序中有多个数量的try-chtch块
2)基本语法:
try{
//可疑代码
//将异常生成对应的异常对象,传递给catch块
}catch(异常){
//对异常的处理
}
//如果没有finally,也是允许的
快速入门案例:
https://blog.csdn.net/2501_92828095/article/details/153975538?fromshare=blogdetail&sharetype=blogdetail&sharerId=153975538&sharerefer=PC&sharesource=2501_92828095&sharefrom=from_link
https://blog.csdn.net/2501_92828095/article/details/153975538?fromshare=blogdetail&sharetype=blogdetail&sharerId=153975538&sharerefer=PC&sharesource=2501_92828095&sharefrom=from_link注意事项:
1)如果异常发生了,则异常后面发生的代码不会执行,直接进入到catch块。
2)如果异常没有发生,则顺序执行try的代码块,不会进入到catch。
3)如果希望不管是否发生异常,都执行某段代码(比如关闭链接,释放资源等) 则使用如下代码 - finally{ }
public class Main {public static void main(String[] args) {// 如果异常发生了,则异常后面发生的代码不会执行,直接进入到catch块// 如果异常没有发生,则顺序执行try的代码块,不会进入到catch// 如果希望不管是否发生异常,都执行某段代码(比如关闭链接,释放资源等)// 则使用如下代码 - finally{ }// ctrl + alt + ttry {String str = "泥嚎"; // 如果是纯数字,则catch块并不会执行int a = Integer.parseInt(str);System.out.println("数字" + a);} catch (NumberFormatException e) {System.out.println("异常信息=" + e.getMessage());} finally {System.out.println("finally代码块被执行。。。。");//无论是否有异常,finally都会被执行}// 输出异常信息 = “泥嚎”System.out.println("程序继续。。。。"); // 语句被执行}
}
4)可以有多个catch语句,捕获不同的异常(进行不同的业务处理),要求父类异常在后,子类异常在前,如(Exception 在后,NullPointerException在前),如果发生异常,只会匹配一个catch
public class Main {public static void main(String[] args) {//可以有多个catch语句,捕获不同的异常(进行不同的业务处理),//要求父类异常在后,子类异常在前,如(Exception 在后,NullPointerException在前),//如果发生异常,只会匹配一个catch//如果try代码块可能有多个异常,可以使用多个catch分别捕获不同的异常,相应处理try{Person person = new Person();person = null;System.out.println(person.getName());//空指针异常int n1 = 10;int n2 = 0;int res = n1 / n2;//算术异常}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 = "jack";public String getName(){return name;}
}
5)可以进行try-finally配合使用,这种用法相当于没有捕获异常,因此程序会直接崩掉 应用场景:执行一段代码,不管程序是否发生异常,就必须执行某个业务逻辑
try{
//代码.....
}
finally{ //总是执行
}
public class Main {public static void main(String[] args) {try {int n1 = 10;int n2 = 0;System.out.println(n1 / n2);} finally {System.out.println("执行了finally......");}System.out.println("程序继续执行........");}
}

小结:
1)如果没有出现异常,则执行try块中所有语句,不执行catch块中语句,如果有finally,最后还需要执行finally里面的语句
2)如果出现异常,则try块中异常发生后,try块中剩下的语句不再执行,将执行catch块中的语句,如果有finally,最后还需要执行finally里面的语句
