java7 异常分类总结

为什么要学 异常

  • java异常是 对java语言错误的一种错误类型整合、无论是编译、运行、都有相应的异常来标记

  • 在一个大型项目中、要找到错误是非常困难的、这时候就需要自定义异常抛出、以便于更迅速地定位代码问题

  • 但有一个问题、永远不可能定义出所有的异常、因为有的异常是于业务息息相关的
    对此、java创始人、定义了异常的分类、以及常见的异常信息

  • 在我们编写代码的过程中、有现成的异常就可以直接抛出异常信息、没有的就需要自定义

  • 自定义异常、根据不同类别、分别继承不同的异常类、对于团队其他成员、也是一种便捷、
    大家学的都一样、然后规定都这么写、自然懂得每个异常的意思、也就更方便维护代码

{———-}

java api

  • java 7
    如图

Exceptions

  • ArithmeticException
    • 算术类异常
  • ArrayIndexOutOfBoundsException
    • 数组下标越界异常
  • ArrayStoreException
    • 数组存储异常。当向数组中存放非数组声明类型对象时抛出。
  • ClassCastException
    • 类转换异常
  • ClassNotFoundException
    • 类未找到异常
  • CloneNotSupportedException
    • 不支持克隆异常。
    • 当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。
  • EnumConstantNotPresentException
    • 枚举常量不存在异常。
    • 当应用试图通过名称和枚举类型访问一个枚举对象,但该枚举对象并不包含常量时,抛出该异常。
  • Exception
    • 根异常。
    • 用以描述应用程序希望捕获的情况。
  • IllegalAccessException
    • 违法的访问异常。
    • 当应用试图通过反射方式创建某个类的实例、访问该类属性、调用该类方法,而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常。
  • IllegalArgumentException
    • 这个异常的解释是”方法的参数错误”,很多j2me的类库中的方法在一些情况下都会引发这样的错误,
    • 比如音量调节方法中的音量参数如果写成负数就会出现这个异常,
    • 再比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,
      因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。
  • IllegalMonitorStateException
    • 违法的监控状态异常。
    • 当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。
  • IllegalStateException
    • 违法的状态异常。
    • 当在Java环境和应用尚未处于某个方法的合法调用状态,而调用了该方法时,抛出该异常
  • IllegalThreadStateException
    • 违法的线程状态异常。
    • 当县城尚未处于某个方法的合法调用状态,而调用了该方法时,抛出异常
  • IndexOutOfBoundsException
    • 索引越界异常。
    • 当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。
  • InstantiationException
    • 实例化异常。
    • 当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。
  • InterruptedException
    • 被中止异常。
    • 当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。
  • NegativeArraySizeException
    • NoSuchFieldException数组大小为负值异常。
    • 当使用负数大小值创建数组时抛出该异常。
  • NoSuchFieldException
    • 属性不存在异常。
    • 当访问某个类的不存在的属性时抛出该异常。
  • NoSuchMethodException
    • 方法未找到异常
  • NullPointerException
    • NPE 空指针异常
  • NumberFormatException
    • 数字转换异常
  • ReflectiveOperationException
    • 反射异常
  • RuntimeException
    • 运行时异常
  • SecurityException
    • 安全异常、由安全管理器抛出,用于指示违反安全情况的异常。
  • StringIndexOutOfBoundsException
    • 字符串索引越界异常。
    • 当使用索引值访问某个字符串中的字符,而该索引值小于0或大于等于序列大小时,抛出该异常。
  • TypeNotPresentException
    • 类型不存在异常。
    • 当应用试图以某个类型名称的字符串表达方式访问该类型,但是根据给定的名称又找不到该类型是抛出该异常。
    • 该异常与ClassNotFoundException的区别在于该异常是unchecked(不被检查)异常,而ClassNotFoundException是checked(被检查)异常。
  • UnsupportedOperationException
    • 不支持的方法异常。指明请求的方法不被支持情况的异常。

Errors

  • AbstractMethodError
    • 抽象方法错误。当应用试图调用抽象方法时抛出。
  • AssertionError
    • 断言错。用来指示一个断言失败的情况。
  • BootstrapMethodError
    • 引导方法异常
  • ClassCircularityError
    • 类循环依赖错误。
    • 在初始化一个类时,若检测到类之间循环依赖则抛出该异常。
  • ClassFormatError
    • Error类格式错误。
    • 当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。
  • Error
    • 错误。
    • 是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。
  • ExceptionInInitializerError
    • 初始化程序错误。
    • 当执行一个类的静态初始化程序的过程中,发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。
  • IllegalAccessError
    • 违法访问错误。
    • 当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。
  • IncompatibleClassChangeError
    • 不兼容的类变化错误。
    • 当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。
    • 一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。
  • InstantiationError
    • 实例化错误。
    • 当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常.
  • InternalError
    • 内部错误。
    • 用于指示Java虚拟机发生了内部错误。
  • LinkageError
    • 链接错误。
    • 该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。
  • NoClassDefFoundError
    • 未找到类定义错误。
    • 当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误。
  • NoSuchFieldError
    • 域不存在错误。
    • 当应用试图访问或者修改某类的某个域,而该类的定义中没有该域的定义时抛出该错误。
  • NoSuchMethodError
    • 方法不存在错误。
    • 当应用试图调用某类的某个方法,而该类的定义中没有该方法的定义时抛出该错误。
  • OutOfMemoryError
    • 内存不足错误。
    • 当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。
  • StackOverflowError
    • 堆栈溢出错误。
    • 当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。
  • ThreadDeath
    • 线程结束。
    • 当调用Thread类的stop方法时抛出该错误,用于指示线程结束。
  • UnknownError
    • 未知错误。
    • 用于指示Java虚拟机发生了未知严重错误的情况。
  • UnsatisfiedLinkError
    • 未满足的链接错误。
    • 当Java虚拟机未找到某个类的声明为native方法的本机语言定义时抛出。
  • UnsupportedClassVersionError
    • 不支持的类版本错误。
    • 当Java虚拟机试图从读取某个类文件,但是发现该文件的主、次版本号不被当前Java虚拟机支持的时候,抛出该错误。
  • VerifyError
    • 验证错误。当验证器检测到某个类文件中存在内部不兼容或者安全问题时抛出该错误。
  • VirtualMachineError
    • 虚拟机错误。用于指示虚拟机被破坏或者继续执行操作所需的资源不足的情况。

分类

  • java.lang.Exception

    • RuntimeException
      • AclNotFoundException
      • ActivationException
      • AlreadyBoundException
      • ApplicationException
      • AWTException
      • BackingStoreException,
      • BadAttributeValueExpException
      • BadBinaryOpValueExpException
      • BadLocationException
      • BadStringOperationException
      • BrokenBarrierException
      • CertificateException
      • DataFormatException
      • DatatypeConfigurationException
      • DestroyFailedException
      • ExecutionException
      • ExpandVetoException
      • FontFormatException
      • GeneralSecurityException
      • GSSException
      • IllegalClassFormatException
      • IntrospectionException
      • InvalidApplicationException
      • InvalidMidiDataException
      • InvalidPreferencesFormatException
      • InvalidTargetObjectTypeException
      • IOException
      • JAXBException
      • JMException
      • KeySelectorException
      • LastOwnerException
      • LineUnavailableException
      • MarshalException
      • MidiUnavailableException
      • MimeTypeParseException
      • MimeTypeParseException
      • NamingException
      • NoninvertibleTransformException
      • NotBoundException
      • NotOwnerException
      • ParseException
      • ParserConfigurationException
      • PrinterException
      • PrintException
      • PrivilegedActionException
      • PropertyVetoException
      • ReflectiveOperationException
      • RefreshFailedException
      • RemarshalException
      • SAXException
      • ScriptException
      • ServerNotActiveException
      • SOAPException
      • SQLException
      • TimeoutException
      • TooManyListenersException
      • TransformerException
      • TransformException
      • UnmodifiableClassException
      • UnsupportedAudioFileException
      • UnsupportedCallbackException
      • UnsupportedFlavorException
      • UnsupportedLookAndFeelException
      • URIReferenceException
      • URISyntaxException
      • UserException
      • XAException
      • XMLParseException
      • XMLSignatureException
      • XMLStreamException
      • XPathException
    • ReflectiveOperationException
      • ClassNotFoundException,
      • IllegalAccessException,
      • InstantiationException,
      • InvocationTargetException,
      • NoSuchFieldException,
      • NoSuchMethodException
    • CloneNotSupportedException
    • InterruptedException
      1
      分割线
  • java.lang.Error

    • AnnotationFormatError
    • AssertionError
    • AWTError
    • CoderMalfunctionError
    • FactoryConfigurationError
    • FactoryConfigurationError
    • IOError
    • LinkageError
      • BootstrapMethodError
      • ClassCircularityError
      • ClassFormatError
        • UnsupportedClassVersionError
      • ExceptionInInitializerError
      • NoClassDefFoundError
      • UnsatisfiedLinkError
      • VerifyError
      • IncompatibleClassChangeError
        • AbstractMethodError
        • IllegalAccessError
        • InstantiationError
        • NoSuchFieldError
        • NoSuchMethodError
    • ServiceConfigurationError
    • ThreadDeath
    • TransformerFactoryConfigurationError
    • VirtualMachineError
      • InternalError
      • OutOfMemoryError
      • StackOverflowError
      • UnknownError

总结

异常分类:运行时异常、中断异常、反射异常、无法克隆异常

错误分类:io、线程终止、堆栈溢出、文件或者方法未找到、类格式错误、

熟记大分类、略记常用小分类、一般一年见不到一次的、碰到就google、