java基础之错误与异常

  •  
    • 异常/错误

    • 程序运行过程中,可能会发生一些不被期望的效果,肯定会阻止我们的程序按照指令取执行,这种不被期望的效果肯定会抛出来告诉我们
    • 在java中有一个定义好的规则,Throwable (可以抛出的)
    • Error错误

    • 通常是一些物理性的,JVM虚拟机本身出现的问题,程序指令时处理不了的
    • Exception异常

    • 通常是一种认为规定的不正常的现象,通常是给定的程序指令产生了一些不符合规范的事情
    • Throwable
    • Error(错误) Exception(异常)
    • StackOverflowError(栈内存溢出错误) RunTimeException(运行时异常)
    • OutOfMemoryError(堆内存溢出错误)
    • 异常的分支体系

      • 运行时异常(非检查·异常)

      • Error和RunTImeException都算作运行时异常
      • javac编译时,不会提示和发现的
      • 在编写程序时不要求必须做处理,如果我们愿意可以添加处理手段(try catch)
      • 要求出现这样的异常时,知道怎么产生和如何修改
      • 1:InputMisMatchException(输入不匹配异常)
      • int value=input.nextInt() 数入abc就不匹配了
      • 2:NumberFormatException(数字格式化异常)
      • int value=Integer.perse\Int(“123.45”);
      • 3:NegativeArraySizeException(数组长度负数异常)
      • int[] array=new int[-2];
      • 4:NullPointException(空指针异常)
      • int[][] array=new int[3][];------三个数组,但是小数组没有给长度,所以下面的赋值是赋不上的,每个数组没有长度
      • array[0][0]=10;
      • person p=null;---------p为空了可以,但是调用它的方法就会产生空指针异常
      • p.getName();
      • 5:类与类关系是
        • ArithmeticException(数字异常)
        • 10/0 整数不允许除零 Infinty小数除以0会产生无穷----------就是显示Infinty
      • 6:ClassCastException(造型异常)-----多态的情况下,可能会用错对象
        • Person p=new Tescher();
        • Student s=(Student) p;
      • 7:String INdexOutOfBoundsException 字符串越界
        • String str=“abc”;
        • str.charAt(5);
      • 8:IndexOutOfBoundsException 集合越界
        • list家族
        • ArrayList list=new ArrayList();
        • list.add();list.add();
        • list.get(5)
      • 9:IllegalArgumentException非法参数异常
        • ArrayList list=new ArrayList(-1);
    • 编译时异常(检查异常)

      • 除了Error和RuntimeException以外的其他异常
      • javac编译的时候,强制要求我们必须为这样的异常做处理(try或者throws)
      • 因为这样的异常在运行时极有可能产生问题的,异常产生后后续的须有执行就停止了
      • 1:InterruptException
      • try{
      • Thread。sleep(5000);
      • }catch(Exception){
      • }
      • 后续还有很多编译是异常
    • 添加处理异常手段

    • 处理异常不是异常消失了 处理异常指的是 处理异常之后 后续的代码不会因为此异常而终止执行
    • 两种手段
    • try{}catch{}【finally{}】
    • 1try不能单独出现
    • 2:后面必须添加catch或者finally
    • 3:catch有一组括号(NullPounterException)目的是为了捕获某一种异常
    • 4:catch可以有很多个存在
      • 捕获异常之间没有任何的继承关系
      • 捕获的异常需要从小到大进行捕获
    • 5:finally不是必须存在的
      • 若存在finally结构,则必须执行
    • 6:处理异常放在方法内部可能还会有小问题
      • 如果在方法内部有返回值
      • 不管返回的return关键字在哪里 finally一定会执行完毕
      • 返回值具体结果看情况
    • throws抛出
      • 1:异常只能在方法上抛出 属性是不能处理异常的
      • 2:可以在方法 构造方法上抛出
      • 3:方法可以抛出不知一个异常 通过 隔开
      • 4:抛出的异常与多个catch 类似 要么没关系,要么先抛出小异常 在抛出大异常
    • Throwable的分支
    • Exception Error
    • 运行时 编译时 我们也可以自定义异常 创建异常
    • 1:自己描述一个异常的类
    • 2:让自己的类继承
      • 如果继承的是RuntimeException-------那就是运行时异常(不需要必须添加处理手段)
      • 如果继承的时Exception--------------编译时异常(必须添加处理手段)
    • 3:创建一个当前自定义异常类的对象
      • 通过throw关键字 主动产生异常
    • 4:当我们设计描述的方法事情 之前没有相关的异常能描述我的问题Box
      • 这时候才会利用自定义异常 -----通常时做封装的时候需要用到

你可能感兴趣的:(java,开发语言)