Java的异常:Error与Exception

1、 异常机制的概述
      异常机制是指当程序出现错误后,程序如何处理。具体来讲,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。编程

      程序错误分为三种:1.编译错误;2.运行时错误;3.逻辑错误。
      (1)编译错误是由于程序没有遵循语法规则,编译程序可以本身发现而且提示咱们错误的缘由和位置,这个也是你们在刚接触编程语言最常遇到的问题。
      (2)运行时错误是由于程序在执行时,运行环境发现了不能执行的操做。
      (3)逻辑错误是由于程序没有按照预期的逻辑顺序执行。异常也就是指程序运行时发生错误,而异常处理就是对这些错误进行处理和控制。
2、 异常的结构    
       在 Java 中,全部的异常都有一个共同的祖先 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制经过 Java 应用程序传输的任何问题的共性。数组

 Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),两者都是 Java 异常处理的重要子类,各自都包含大量子类。异常和错误的区别是:异常能被程序自己能够处理,错误是没法处理。
      Trowable类中经常使用方法以下:安全

1. 返回异常发生时的详细信息 public string getMessage(); 2. 返回异常发生时的简要描述 public string toString(); 3. 返回异常对象的本地化信息。使用Throwable的子类覆盖这个方法,能够声称本地化信息。若是子类没有覆盖该方法,则该方法返回的信息与getMessage()返回的结果相同 public string getLocalizedMessage(); 4. 在控制台上打印Throwable对象封装的异常信息 public void printStackTrace();

  Error(错误):是程序没法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操做无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 再也不有继续执行操做所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)通常会选择线程终止。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,由于它们在应用程序的控制和处理能力之 外,并且绝大多数是程序运行时不容许出现的情况。对于设计合理的应用程序来讲,即便确实发生了错误,本质上也不该该试图去处理它所引发的异常情况。在 Java中,错误经过Error的子类描述。 编程语言

   Exception(异常):是程序自己能够处理的异常。Exception 类有一个重要的子类 RuntimeException。RuntimeException 类及其子类表示“JVM 经常使用操做”引起的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引起运行时异常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。
      Exception(异常)分两大类:运行时异常和非运行时异常(编译异常)。程序中应当尽量去处理这些异常。
      1.运行时异常:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中能够选择捕获处理,也能够不处理。这些异常通常是由程序逻辑错误引发的,程序应该从逻辑角度尽量避免这类异常的发生。运行时异常的特色是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即便没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译经过。
      2.非运行时异常 (编译异常):是RuntimeException之外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,若是不处理,程序就不能编译经过。如IOException、SQLException等以及用户自定义的Exception异常,通常状况下不自定义检查异常。spa

 

  1. 可查异常(编译器要求必须处置的异常):正确的程序在运行中,很容易出现的、情理可容的异常情况。除了Exception中的RuntimeException及其子类之外,其余的Exception类及其子类(例如:IOException和ClassNotFoundException)都属于可查异常。这种异常的特色是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,不然编译不会经过。
       2. 不可查异常(编译器不要求强制处置的异常):包括运行时异常(RuntimeException与其子类)和错误(Error)。RuntimeException表示编译器不会检查程序是否对RuntimeException做了处理,在程序中没必要捕获RuntimException类型的异常,也没必要在方法体声明抛出RuntimeException类。RuntimeException发生的时候,表示程序中出现了编程错误,因此应该找出错误修改程序,而不是去捕获RuntimeException。线程

 

3、Java常见异常
      1. RuntimeException子类:    设计

      2.IOException3d

 

      3. 其余    指针

 

相关文章
相关标签/搜索