• Java 异常注意事项


    异常的注意事项:
     
    1,子类在覆盖父类方法时,父类的方法如果抛出了异常,
    那么子类的方法只能抛出父类的异常或者该异常的子类。
     
    2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集。
     
     
    简单说:子类覆盖父类只能抛出父类的异常或者子类或者子集。 
     
    注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛,就只能try .
     
     
    在面试中经常会问到Exception和RuntimeException区别?
    Exception在程序中必须使用try...catch 进行处理;
    RuntimeException可以不使用try...catch 进行处理,但是如果产生了异常,则异常就直接由JVM进行处理。

    Java的异常类体系中,Error和RuntimeException是非检查型异常,其他的都是检查型异常。


    所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类 
    不可以在不声明的情况下抛出非RuntimeException

    简单的说,非RuntimeException要自己写catch块处理掉。

    对于RuntimeException的子类最好也使用异常处理机制。虽然RuntimeException的异常可以不使用try...catch进行处理,但是如果一旦发生异常,则肯定会导致程序中断执行,所以,为了保证程序再出错后依然可以执行,在开发代码时最好使用try...catch的异常处理机制进行处理。

    常见的RuntimeException- -                            

    RuntimeException是开发中最容易遇到的,下面列举一下常见的RuntimeException:

    1、NullPointerException:见的最多了,其实很简单,一般都是在null对象上调用方法了。
          String s=null;
          boolean eq=s.equals(""); // NullPointerException
       这里你看的非常明白了,为什么一到程序中就晕呢?
       public int getNumber(String str){
      if(str.equals("A")) return 1;
       else if(str.equals("B")) return 2;
       }
       这个方法就有可能抛出NullPointerException,我建议你主动抛出异常,因为代码一多,你可能又晕了。
       public int getNumber(String str){
      if(str==null) throw new NullPointerException("参数不能为空");
                                       //你是否觉得明白多了
      if(str.equals("A")) return 1;
          else if(str.equals("B")) return 2;
       }

    2、NumberFormatException:继承IllegalArgumentException,字符串转换为数字时出现。比如int i= Integer.parseInt("ab3");

    3、ArrayIndexOutOfBoundsException:数组越界。比如 int[] a=new int[3]; int b=a[3];

    4、StringIndexOutOfBoundsException:字符串越界。比如 String s="hello"; char c=s.chatAt(6);

    5、ClassCastException:类型转换错误。比如 Object obj=new Object(); String s=(String)obj;

    6、UnsupportedOperationException:该操作不被支持。如果我们希望不支持这个方法,可以抛出这个异常。既然不支持还要这个干吗?有可能子类中不想支持父类中有的方法,可以直接抛出这个异常。

    7、ArithmeticException:算术错误,典型的就是0作为除数的时候。

    8、IllegalArgumentException:非法参数,在把字符串转换成数字的时候经常出现的一个异常,我们可以在自己的程序中好好利用这个异常。

  • 相关阅读:
    第六周Java学习总结
    结对编程练习_四则运算(一)
    实验一Java开发环境的熟悉
    第四周Java学习总结
    第三周Java学习总结
    2019-2020-2 20175230滕星《网络对抗技术》Exp9 Web安全基础
    2019-2020-2 20175230 滕星《网络对抗技术》Exp 8 Web基础
    2019-2020-2 20175230滕星《网络对抗技术》Exp7 网络欺诈防范
    2019-2020-2 网络对抗技术 20175230滕星 Exp6 MSF基础应用
    2019-2020-2 网络对抗技术 20175230滕星 Exp5 信息搜集与漏洞扫描
  • 原文地址:https://www.cnblogs.com/xiarongjin/p/8308407.html
Copyright © 2020-2023  润新知