《项目案例—黑马tlias智能学习辅助系统》
目录:
- 异常
一:学习目标:
- 异常:能够看懂异常信息,了解异常体系结构和分类,掌握异常的两种处理方式,自定义异常。
二、异常:
1.异常的概念:语法错误其实不是异常。
2.异常的分类:
注意:RuntimeException是指运行的时候可能就会出现报错,不一定会。但是对待这样的情况,我们是需要处理的
3.异常的处理流程:
异常的处理方式:(看问题怎么看待,如果希望处理,那就用try…catch;如果需要暴露出来,告诉外界这是你们的操作失误,那就用throw往外抛;)
1)使用try:对可能出现的地方,设置另外的执行方案
2)throws 往外抛
注意:在Java中,throw和throws都是用于处理异常的关键字。这里还有一个throw的使用,其实也是往外抛异常,但是throw直接在方法体里,预知到了,然后直接往外抛给调用者(抛给用户),throws是定义在方法上的,方便别人查看、调用,知道可能会抛出什么异常,然后你调了,就得处理
,但它们在使用和上下文中有明显的区别。throw:
throw用于在方法体中显式地抛出一个异常。
当throw语句被执行时,它会立即终止当前方法的执行,并将控制权转移到最近的能够处理该异常的异常处理器(catch块)。
如果该异常没有被捕获,那么它将被传递给调用者,以此类推,直到被捕获或到达程序的顶层(此时程序将终止)。
throw后面必须跟一个具体的异常对象。
throws:
throws用于声明一个方法可能抛出的异常,但并不在方法体中抛出这个异常。
使用throws关键字可以在方法的签名中声明一个或多个异常,这样调用者就知道需要处理哪些类型的异常。
如果一个方法使用了throws来声明它可能抛出的异常,那么调用该方法的代码要么必须处理这些异常(使用try-catch块),要么它本身也必须声明这些异常(使用throws)。
使用throw的异常示例:
java
public class ExampleWithThrow { public static void main(String[] args) { try { // 调用一个可能会抛出异常的方法 performOperation(); } catch (ArithmeticException e) { // 处理ArithmeticException异常 System.out.println("捕获到算术异常: " + e.getMessage()); } } public static void performOperation() { int a = 10; int b = 0; // 使用throw显式地抛出一个异常 if (b == 0) { throw new ArithmeticException("除数不能为零"); } // 如果b不为零,则执行除法操作 int result = a / b; System.out.println("结果是: " + result); }
}
在这个示例中,performOperation方法使用throw关键字显式地抛出了一个ArithmeticException异常。当b为0时,这个异常会被抛出,并在main方法中的try-catch块中被捕获和处理。