每日一题----------异常处理

发布于:2025-03-08 ⋅ 阅读:(110) ⋅ 点赞:(0)

总结:

  • NullPointerException:尝试使用一个空引用进行操作时抛出。

  • ArrayIndexOutOfBoundsException:数组下标越界时抛出。

  • ClassCastException:类型转换失败时抛出。

  • ArithmeticException:数学运算错误时抛出,如除以零。

  • IllegalArgumentException:传递给方法的参数不合法时抛出。

  • NumberFormatException:字符串转数字失败时抛出。

在Java中,异常(Exception)是程序执行期间出现的错误情况。Java中的异常处理机制允许程序优雅地处理这些错误而不至于崩溃,并且提供了组织和管理异常的方式。Java中的异常主要分为两大类:受检异常(Checked Exceptions)和非受检异常(Unchecked Exceptions)。此外,还有一个特殊的类别叫做错误(Errors),它们通常代表严重的、通常是不可恢复的问题。

执行顺序:

1.如果没有出现异常,则需要try块中所有的语句,不执行catch块中的语句,如果有finally,最后还需要执行finally里面的语句。

2.如果出现异常,则try块中异常发生后,try块还剩下的语句不在执行,将执行catch块中的语句,如果有finally,最后还需要执行finally里面的语句。

基础语法:

try{
         int num1 = 10 ;
         int num2 = 0 ;
         double sum = num1/num2;
     } catch (ArithmeticException e) {
         System.out.println("异常信息 = "+e.getMessage());
     }finally {
         System.out.println("程序继续运行....");
     }

运行结果:

 特殊情况:如果代码中有两种异常,那么可以使用多个catch块来捕获,但是要遵守子类异常写在前面,父类异常写在后面。

 try{
         Try aTry = new Try();
         aTry = null;
         System.out.println(aTry.getClass());
         int num1 = 10 ;
         int num2 = 0 ;
         System.out.println(num1/num2);
     }catch (ArithmeticException e) {
         System.out.println("算术异常信息 = "+e.getMessage());
     } catch (NullPointerException e) {
         System.out.println("空指针异常信息 = "+e.getMessage());
     } catch (Exception e) {
         System.out.println("异常信息 = "+e.getMessage());
     } finally {
         System.out.println("程序继续运行....");
     }
    }

运行结果:

通过结果可以发现,可以先捕获第一个,然后后续代码将不会执行

如果搭配try和final使用,如果有异常会使程序崩掉。

try{
         int num1 = 10 ;
         int num2 = 0 ;
         System.out.println(num1/num2);
     }
     finally {
         System.out.println("程序继续运行....");
     }

 运行结果:

此时会报错,也就是说异常没有被catch捕获,那么程序执行完就蹦了,简单理解就是有病没有治,所以final相当于亡语。 

关于throws异常处理:

当一个方法声明了它可能会抛出某些异常后,任何调用这个方法的地方都需要处理这些异常。处理方式有两种:

  1. 捕获异常:使用 try-catch 语句块来捕获并处理异常。

  2. 声明抛出异常:如果你不希望在当前方法中处理异常,可以通过 throws 关键字再次声明该异常,将其传递给上一级调用者。

public void myMethod() throws IOException, SQLException {
    // 方法体
}

可以扔出给上一级的调用者,throws相当于摆烂,甩锅。一级向一级的传,最终传到jvm机,最终会挂了。


网站公告

今日签到

点亮在社区的每一天
去签到