错误与异常

错误与异常

java程序运行偶成中,可能会出现阻止我们的程序取运行的效果;
  在Java中有一个定义好的规则Throwable(可以抛出的)类
  这个类有两个子类
    1.Error错误
    通常不是人为的,是JVM虚拟机内部运行错误;
    StackOverflowError:栈溢出错误;
    OutOfMemoryError:堆溢出错误;
    2.Exception异常
    不正常的现象,可以人为处理;
  运行的分支:
    运行时异常(非检查异常)
      Error和RuntimeException都算作运行时异常;
      运行时异常在javac编译的时候,是不会提示和发现的;
      在程序编写时不要求必须做处理,如果我们愿意可以添加处理手段(try throws)
      1.InputMisMatchException 输入不匹配
         int value = input . next();
      2.NumberFormatException 数字格式化异常
         int value = Integer.parseInt(“abc”);
      3. NegativeArraySizeException 数组长度负数
         int [] array = new int[-2];
      4.ArrayIndexOfBoundsException 数组越界异常
         int [] arr = {1,2,3};
         array[5];
      5.NullPointedException 空指针异常
         int[][] array = new int[3][];
         array[0][0] = 10;
         Person p = null;
         p.getName();
      6.AirthmeticException 数字异常
         10/0 整数不允许除以0 小数除以0会得到Infinity 无穷
      7.ClassCastException 造型异常
         Person p = new Teacher();
         Student s = (Student)p;
      8.StringIndexoutOfBoundsException 字符串越界
         String str= “abc”;
         str.charAt(9);
      9.IndexOutOfBoundsException 集合越界
         List家族
         ArrayList list = new ArrayList();
         list.add();list.add();list.add();
         list.get(5);
      10.IllegalArgumentException 非法参数异常
         ArrayList list = new ArrayList(-1);
    编译时异常(检查异常)
      处理Error和RuntimeException以外的其他异常;
      javac编译的时候,强制要求我们必须为这样的异常做处理(try或throws)
      因为这样的异常在程序运行的过程中极有可能产生问题;
      异常产生后,后续所有的执行就会都停止;
      1.InterruptException
        try{
          Thread.sleep(5000);
        }catch(Exception e{
        }
      添加处理异常的手段(不是让异常消失,而是为了后续的代码不会因此而终止执行)
      两种方式处理异常
       try{}catch(){}finally{}
       1.try不能单独的出现;
       2.try后面必须添加catch或finally
       3.catch有一组小括号(NullPointedException)目的是为了捕获某一种异常
       4.catch可以有很多个存在
         捕获的异常之间没有任何的继承关系,他们是并列关系;
         捕获的异常需要从小到大的范围进行捕获
       5.finally不是必须存在的
         若存在finally结构,则程序必须执行;
         final finally finalize的区别
          final: 特征修饰符 修饰变量 属性 方法 类
          finally:处理异常的一种方式的一部分,可有可无,如果有,则程序必须执行
          finalize :Object类中的一个protected方法(当对象没有任何引用指向的时候,会被GC回收),当对象回收的时候,默认调用finalize方法,如果想要看到对象回收的效果,可以重写public void finalize(){}
       6.处理异常放在方法内部,可能还会有小问题
          如果在方法内部有返回值,不管关键字return在哪里,都会执行finally的代码块;   
       throws抛出
       1.异常只能在方法上抛出,属性不能处理异常;
       2.可以在普通方法和构造方法抛出;
       3.方法可以抛出不止一个异常,可以用逗号隔开;
       4.抛出的异常与多个catch类似,要么是并列关系,要么先抛出小异常;  
       我们可以自己创建异常----自定义异常
       1.自己描述一个异常的类;
       2.让我们自己的类继承
         如果继承是RuntimeException---->运行时异常(不需要添加处理手段)
         如果继承是Exception--------------->编译时异常(必须添加处理手段)
       3.创建一个当前自定义异常的类的对象
         通过throw关键字 主动产生异常
       4.当我们设计描述的方法,之前没有相关的异常能描述这个问题,这个时候才会用自定义异常类来描述;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值