Day10基础不牢地动山摇?Java基础

Day10基础不牢地动山摇?Java基础,博智网带你了解详细信息 。
目录

  • 1、异常的捕获与处理
    • 1.1 处理异常
    • 1.2 异常处理的流程
    • 1.3 throw关键字
    • 1.4 异常处理模型
    • 1.5 RuntimeException
    • 1.6 断言:assert
    • 1.7 自定义异常
  • 2、链表
    • 2.1 链表基本的结构
    • 2.2 链表实现结构说明
    • 2.3 增加链表数据—public void add(数据)
    • 2.4 增加多个数据—public void addAll(数据数组)
    • 2.5 统计数据个数—public int size()
    • 2.6 链表数据转换为对象数组—public Object[] toArray()
    • 2.7 链表查询数据—public boolean contains(查找对象)
    • 2.8 根据索引取得数据—public Object get(int index)
    • 2.9 修改指定索引数据—public void set(int index,Object newData)
    • 2.10 删除数据—public void remove(数据)
  • Link链表类模板
    • 综合案例

      1、异常的捕获与处理异常时导致程序中断执行的一种指令流 。程序出现异常没用合理处理,就会导致程序终止执行 。
      观察没有异常产生的程序
      【Day10基础不牢地动山摇?Java基础】public class TestDemo1{ public static void main(String args[]){System.out.println("1、除法程序开始");int result =10/2;System.out.println("2、除法程序结果:"+result);System.out.println("3、除法程序结束"); }}/*1、除法程序开始2、除法程序结果:53、除法程序结束*/
      产生异常的程序
      public class YiChang{ public static void main(String args[]){System.out.println("1,除法程序开始");int result =10/0;//会出现错误System.out.println("2,除法程序结果:"+result);System.out.println("3,除法程序结束"); }}/*Exception in thread "main" java.lang.ArithmeticException: / by zeroat YiChang.main(YiChang.java:5)*/
      这个时候程序出现了错误,那么出现错误之后程序不执行了,而是直接进行了错误信息的输出,并且直接结束了程序,但是,出现了错误,应该去处理才对,但是现在没有处理 。
      1.1 处理异常现在,如果希望程序出现了异常之后,程序依然可以正常的完成的话,那么就可以使用如下的格式进行异常的处理;
      try{可能出现异常的语句}[catch(异常类型 异常对象){处理异常;}catch(异常类型 异常对象){处理异常;}…][finally{异常统一出口不管是否出现异常,都执行此代码;}]
      使用该操作进行异常的处理
      public class TestDemo1{ public static void main(String args[]){System.out.println("1、除法程序开始");try{int result =10/0;System.out.println("2、除法程序结果:"+result);}catch(ArithmeticException e){System.out.println("异常被正确的处理了");}System.out.println("3、除法程序结束"); }}/*1、除法程序开始异常被正确的处理了3、除法程序结束*/
      可以发现加入了异常处理之后,程序之中即使有了异常,程序也可以正常执行完毕,但是现在发现,异常处理时的错误输出信息和之前相比,出错的信息不明确了,那么为了让错误的信息更加完整,一般而言,都会调用printStackTrace()方法进行异常信息的打印
      这个方法(printStackTrace)打印的异常信息是最完整的:
      try{ int x = 10/0;//异常 System.out.println("2,除法程序结果:"+x);}catch(ArithmeticException e){ e.printStackTrace();}
      try catch finallly 操作
      public class TestDemo1{ public static void main(String args[]){System.out.println("1,除法程序开始");try{int x = 10/0;//异常System.out.println("2,除法程序结果:"+x);}catch(ArithmeticException e){e.printStackTrace();}finally{System.out.println("不管是否异常都会执行");}System.out.println("3,除法程序结束"); }}
      但是,对于之前的程序现在又有了问题:现在执行数学计算的两个参数,都是由程序默认提供,那么如果说现在两个计算的参数通过初始化参数传递呢?
      public class TestDemo2{ public static void main(String args[]){System.out.println("1,除法程序开始");try{int x = Integer.parseInt(args[0]); //接收参数int y = Integer.parseInt(args[1]);//接收参数int result = x/y;System.out.println("2,除法程序结果:"+result);}catch(ArithmeticException e){e.printStackTrace();}finally{System.out.println("不管是否异常都会执行");}System.out.println("3,除法程序结束"); }}
      时候发现,数据由外部传送,那么在这种情况下,就有可能出现一下几类问题:
      ​ 执行时不输入参数,ArrayIndexOutOfBoundsException,未处理 。
      ​ 输入的参数不是数字,NumberFormatException,未处理 。
      ​ 被除数为0,ArithmeticException,已处理 。

      推荐阅读