黑马程序员——异常笔记

------- android培训java培训、期待与您交流! ----------

异常

一旦长须发现异常,将导致程序中断执行,我们希望即使程序出现了异常,我们也希望程序正常执行完毕。所以我们需要处理异常try catch finally

try{

         //有可能出现异常的代码

      }catch(Exception e){

         //异常处理代码

      }finally{

         //不管是否异常,都要执行的代码

      }

如果需要知道异常的完整信息,那么可以调用异常类之中的printStackTrace()方法

ArrayIndexOutOfBoundsException,如果接收主函数的参数,有可能出现这个异常,数组越界异常

try{

         int x=Integer.parseInt(args[0]);

         int y=Integer.parseInt(args[1]);

         System.out.println(x/y);

         //有可能出现异常的代码

         int i=10/6;

      }catch(Exception e){

         //异常处理代码

         System.out.println("出现异常");

         e.printStackTrace();

      }finally{

         //不管是否异常,都要执行的代码

         System.out.println("计算结果");

      }

如果输入的不是数字,可能出现NumberFormatException这个异常,数据格式异常

   如果输入的被除数是0则会出现ArithmeticException算术异常

所以我们需要多个catch来捕获异常,并进行处理

 

异常的处理流程:

java之所以用异常处理,是为了减少if else判断,所以以上的处理方案,只是一种严格的方案,如果某些代码分析起来比较麻烦,那么编写多个catch就不那么好用。

error:表示JVM系统出错,程序没执行。处理不了

Exception表示程序运行过程出现的异常,用户可以进行处理

如果在要求不严的情况下,可以用Exceprion来处理所有异常信息

 

throws关键字

         在类之中所有的操作都是以方法体现的,那么在操作中也可能出现异常,如果这样我们也希望异常进行处理,这时就使用throws进行声明抛出异常,然后在调用时使用trycatch来进行处理

在主方法main()也可以使用throws,表示主方法不处理异常,交给JVM来处理

public class Test03 {

   public static void main(String[] args){

//这里处理异常

      try {

         System.out.println(Math.div(5,9));

      } catch (Exception e) {

         e.printStackTrace();

      }

   }

}

class Math{

//在这里抛出异常,在调用出用try catch来处理

   public static int div(int x,int y) throws Exception{

      return x/y;

   }

}

throw关键字

在处理异常之中,可以使用throw人为抛出一个异常对象。

public class Test03 {

   public static void main(String[] args){

      try {

         Math.div();

      } catch (Exception e) {

         e.printStackTrace();

      }

   }

}

class Math{

   public static void div() throws Exception{

      throw new Exception("自己抛的异常");

   }

}

throw和throws的区别:

throw是认为抛出一个实例化异常对象。

而throws用在方法当中,表示此处不处理异常,交给被调用处处理

异常处理标准格式:

public class Test03 {

   public static void main(String[] args){

      try {

         System.out.println("程序计算结果"+Math.div(19,0));

      } catch (Exception e) {

         e.printStackTrace();

      }

   }

}

class Math{

   public static int div(int x,int y) throws Exception{

      int result=0;

      System.out.println("计算开始");

      try{

         result=x/y;

      }catch(Exception e){

         throw e;

      }finally{

         System.out.println("计算结束");

      }

      return result;

   }

}

RuntimeException类:

为了方便用户处理,并不是所有的异常都必须强制处理,那么RuntimeException就可以由用户选择处理,它是Exception的子类,它由用户选择性处理,如果不处理,那么则会由JVM进行默认处理

它的子类有很多,比如

ArithmeticException,ClassCastException,NumberFormatExceprion,等

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值