zoukankan      html  css  js  c++  java
  • java_异常

    异常的继承体系
       
    异常体系:
        Throwable
            |--Error
            |--Exception
                |--RuntimeException
     
     
    1.异常的注意事项:
        在子父类覆盖时:
        1,子类抛出的异常必须是父类的异常的子类或者子集
        2,如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try不能抛
     
    2.异常输出的相关方法和输出信息
    System.out.println(e.getMessage());// / by zero;
      System.out.println(e.toString());// 异常名称 : 异常信息。
     
      e.printStackTrace();//异常名称,异常信息,异常出现的位置。
      //其实jvm默认的异常处理机制,就是在调用printStackTrace方法。
      //打印异常的堆栈的跟踪信息。
     
    3.finally语句的执行
         finally语句在任何情况下都必须执行的代码,这样可以保证一些在任何情况下都必须执行代码的可靠性。
         比如,在数据库查询异常的时候,应该释放JDBC连接等等。finally语句先于return语句执行,而不论其先后位置,也不管是否try块出现异常。
         finally语句唯一不被执行的情况是方法执行了System.exit()方法。System.exit()的作用是终止当前正在运行的 Java 虚拟机。
         finally语句块中不能通过给变量赋新值来改变return的返回值,也建议不要在finally块中使用return语句,没有意义还容易导致错误。
     
    4.异常的区分
    Exception类可以分为两种:运行时异常和受检查异常。
    1、运行时异常
    RuntimeException类及其子类都被称为运行时异常,这种异常的特点是Java编译器不去检查它,
         也就是说,当程序中可能出现这类异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过。例如,当除数为零时,就会抛出java.lang.ArithmeticException异常。
     
    之所以不用在函数上声明,是因为不需要让调用者处理,当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望程序停止后由程序员对代码进行修正
     
    2、受检查异常
    除了RuntimeException类及其子类外,其他的Exception类及其子类都属于受检查异常,这种异常的特点是要么用try...catch捕获处理,要么用throws语句声明抛出,否则编译不会通过。
    3、两者的区别
    运行时异常表示无法让程序恢复运行的异常,导致这种异常的原因通常是由于执行了错误的操作。一旦出现错误,建议让程序终止。
    受检查异常表示程序可以处理的异常。如果抛出异常的方法本身不处理或者不能处理它,那么方法的调用者就必须去处理该异常,否则调用会出错,连编译也无法通过。当然,这两种异常都是可以通过程序来捕获并处理的。
     
    5.Java异常处理的原则和技巧
    1、避免过大的try块,不要把不会出现异常的代码放到try块里面,尽量保持一个try块对应一个或多个异常。
    2、细化异常的类型,不要不管什么类型的异常都写成Excetpion。
    3、catch块尽量保持一个块捕获一类异常,不要忽略捕获的异常,捕获到后要么处理,要么转译,要么重新抛出新类型的异常。
    4、不要把自己能处理的异常抛给别人。
    5、不要用try...catch参与控制程序流程,异常控制的根本目的是处理程序的非正常情况。
     
    6.异常常用的一些方法
         

         
         
     
    7.列举一些常见的异常
         编译期异常:(在写代码时,eclipse会报错的问题)
              NoSuchMethodException:找不到此方法,
              ClassNotFoundException :找不到此类
         运行时异常:(在运行时出现的异常, 会中断程序,往往是因为代码的健壮性不足引起的)
              NullPointerException     空指针异常
              ArithmeticException     除零异常
              ClassCastExcepiton      类型转换异常
              IllegalArgumentException      不合法的参数异常,不正确的参数异常
              InputMismatchException      输入参数格式错误异常,常见于Scanner的输入中
              IndexOutOfBoundsException     下标越界异常
     
     
     
     
     
     
     
     
     
     
     
     
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(zxy.hope@gmail.com)咨询.
  • 相关阅读:
    Activit 5.13 工作流部署新版本后回退到上一个版本
    一个java的http请求的封装工具类
    FastJSON使用例子
    SoapUI、Postman测试WebService
    PLSQL连接oracle数据库
    python函数修饰符@的使用
    QEMU KVM Libvirt手册(8): 半虚拟化设备virtio
    QEMU KVM Libvirt手册(7): 硬件虚拟化
    多个router和多个network
    nova file injection的原理和调试过程
  • 原文地址:https://www.cnblogs.com/anzhi/p/7443534.html
Copyright © 2011-2022 走看看