package test;
/*异常处理:try...catch
* 在运行时处理异常
* try里面的代码就是有可能产生异常对象的代码
* catch(Exception e)用来捕捉到产生的异常对象
* catch块就是来处理异常的代码块
* try...catch处理异常的特点:
* 1、try内部发生异常下面的代码执行
* 2、产生的异常的对象被catch块类面的参数接收
* 3、catch块来处理异常(如何处理要根据具体的业务要求)
* 4、如果处理对象被catch来处理就不会向上抛出
* 5、由于异常对象被处理了,异常后面的代码就会正常的执行
* 6、调用端不会感知到异常的产生(因为没有向上抛出异常),后面的代码正常执行
*/
public class Demo1{
public static void main(String[] args) {
int result = divide(10,0);
System.out.println("调用端的异常后面的代码被执行了");
System.out.println(result);
}
public static int divide(int a, int b) {
int c = 0;
/*抛出运行时的异常,在没有任何的处理的情况下异常对象会自动的抛给调用端
* 调用端接收到这个异常对象,由于调用端也没有任何处理,继续向上抛出给jvm
* jvm会打印这个异常信息
*/
try {
c = a/b;
System.out.println("try内部异常后面的代码被执行了");
} catch (Exception e) {
System.out.println("发生异常");
e.printStackTrace();//打印错误信息
}
System.out.println("调用端的异常后面的代码被执行了");
return c;
}
}
------------------------------------------------------------------------------------------------------------
接收时异常处理
package test;
public class Demo2 {
public static void main(String[] args) {
try {
//接收异常对象
submitOrder(8);
} catch(Exception e) {
//处理异常
System.out.println("我知道库存不足了");
e.printStackTrace();//打印异常信息
}
}
public static void submitOrder(int stock) {
if(stock > 5) {
//我们主动的抛出异常对象的语法
throw new StockException("库存不足"+stock);
}
System.out.println("购买成功");
}
}