异常处理

异常概述和异常体系结构

  1. 在java语言中,将程序执行中发生的不正常的情况称为异常。
  2. 可以分成两类

    1. Error Java虚拟机无法解决的严重问题。如jvm内部错误、资源耗尽 如栈溢出 stackOverflowError 和堆溢出OutOfMemoreError。一般不编写针对性的代码进行处理。
    2. Exception 其他因为变成编程错误或偶然的外在因素导致的一般性问题。可以使用针对性的代码进行处理。
      1. 空指针异常
      2. 试图读取不存在的文件
      3. 网络连接中断
      4. 数组下标越界

        常见异常 (Exception)

  3. 编译时异常 (checked)

    1. IOException
    2. classNotFoundException
  4. 运行时异常(unchecked)—RuntimeException

    1. NullPointerException
    2. ArrarIndexOutofBoundsException
    3. classCassException
    4. NumberFormatException
    5. InputMismatchException
    6. ArithmeicException

      异常处理机制一:try-catch-finallf

  5. 常用方法:

    1. e.getMessage(); 错误信息字符串
    2. printStackTrace(); 控制台打印
    3. e.toString(); 获得异常种类和错误信息

      throws

  6. 在重写时子类抛出的异常必须时父类抛出异常的子类。

  7. 父类方法没有throws,子类重写的方法也不能throws

    手动抛出异常

throw new Exception(“”);

用户自定义异常类

继承异常类,序列化等要求

  • 运行时异常:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
    运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。
  • 非运行时异常 (编译异常):是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。