栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2022/2/5 北京 异常处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022/2/5 北京 异常处理

出现异常:是指new了异常类的对象

方式一:try-catch-finally

方式二:throws+异常类型


try-catch-finally

根据实际问题可以写多个catch

try{
     //可能出现异常的代码
}catch(异常类型1 变量名1){
     //处理异常的方式1
}catch(异常类型2 变量名2){
     //处理异常的方式2
}catch(异常类型3 变量名3){
     //处理异常的方式3
}

 我们会发现把异常处理掉以后,程序是可以正常往下走的。只有try里的代码是中断执行了。

String str="abc";
try{
   int num=Intger.parseInt(str);
   System.out.println("hello1")
}catch(NumberFormatException e){
   System.out.println("出现数值转换异常了")
}
System.out.println("hello2")

 上面代码运行结果:


假如,吃错药了。异常没有被处理掉如下:  (catch(NullPointerException e))。

那么这三行输出一个都没。

String str="abc";
try{
   int num=Intger.parseInt(str);
   System.out.println("hello1")
}catch(NullPointerException e){
   System.out.println("出现数值转换异常了")
}
System.out.println("hello2")

只走第一个catch,不走第三个。

一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常的处理。一旦处理完成,就跳出try-catch结构(没有finally的情况),继续执行后面的代码。

有多个catch的情况下,如果上下catch满足父子类的关系,则一定要把子类写在上面。否则编译报错。

String str="abc";
try{
   int num=Intger.parseInt(str);
   System.out.println("hello1")
}catch(NumberFormatException e){
   System.out.println("出现数值转换异常了")
}catch(NullPointerException e){
   System.out.println("出现空指针异常了")
}catch(Exception e){
   System.out.println("出现异常了")
}
System.out.println("hello2")

通常爱用的俩种异常处理方式(写在catch【】里)

//String getMessage()
方式一:
System.out.println(e.getMessage());//e就是异常类的对象

方式二:
e.printStackTrace();//打印堆栈信息,包含了e.getMessage()

Finally 声明的是一定会被执行的代码

下面俩种方式,一种写finally,一种不写。在下面代码种,这俩种效果是一样的。

但是,finally中的代码,即使try中或catch中有return语句,即使catch中又出现异常了。依旧执行

try{
    int a=0;
    int b=0;
    System.out.println(a/b)
}catch(ArithmeticException e){
    e.printStackTrace();
}catch(Excetion e){
    e.printStackTrace();
}
// System.out.println("我好帅啊~~~")

//finally{
//  System.out.println("我好帅啊~~~")
//}
--------------------------------------------------------------------------------

try{
    int a=0;
    int b=0;
    System.out.println(a/b)
}catch(ArithmeticException e){
    int [] arr=new int[10];
    System.out.println(arr[10]);//catch中有出现异常也会执行finally中的代码
}catch(Excetion e){
    e.printStackTrace();
}finally{
  System.out.println("我好帅啊~~~")
}

那么看看你finally学明白没,return 多少?

try{
    int [] arr=new int[10];
    System.out.println(arr[10]);//出现数组越界异常
    return 1;
}catch(ArrayIndexOutOfBoundsException e){
    e.printStackTrace();
    return 2;//要返回的时候,finally说还有我呢等等。最后就去finally中return3了,
//没有执行这行代码
}finally{
    System.out.println("我好帅啊~~~")
    return 3;
}

有些物理连接,需要我们自己手动去关。比如:数据库连接,输入流输出流,socket连接

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/726732.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号