• Java学习--异常处理及其应用类


      异常是运行时在代码序列中引起的非正常状况,换句话说,异常是运行时错误。在不支持异常处理的计算机语言中,必须手动检查和处理错误----通常是通过使用错误代码,等等。这种方式既笨拙又麻烦。Java的异常处理避免了这些问题,并且在处理过程中采用面向对象的方式管理运行时错误。

    1、异常处理的基础概念

      Java异常是用来描述在一段代码中发生的异常情况(也就是错误)的对象。当出现引起异常的情况时,就会创建用来表示异常的对象,并在引起错误的方法中抛出异常的对象。方法可以选择自己处理异常,也可以继续传递异常。无论采用哪种方式,在某一点都会捕获并处理异常。异常可以由Java运行时系统生成,也可以通过代码手动生成。由Java抛出的异常与那些违反Java语言规则或Java执行环境约束的基础性错误有关。手动生成的异常通常用于向方法的调用者报告某些错误条件。

      Java异常处理通过5个关键字进行管理:try、catch、throw、throws和finally。它们的作用:在try代码块中封装可能发生异常的程序语句,对这些语句进行监视。如果在try代码块中发生异常,就会将异常抛出。代码可以(使用catch)捕获异常,并以某些理性方式对其进行处理。系统生成的异常由Java运行时系统自动抛出。为了手动抛出异常,需要使用throw关键字。从方法抛出的任何异常都必须通过一条throws语句进行指定。在try代码块结束之后必须执行的所有代码块都需要放入finally代码块中。

      异常处理代码块一般形式:         

        try{
        //block of code to moniter for errors
        }
        catch (ExceptionType1 e) {
        // exception handler for ExceptionType1
        }
        catch (ExceptionType2 e) {
        // exception handler for ExceptionType1
        }
        //.........
        finally{
        // block of code to be executed after try bloock ends
        }

      其中,ExceptionType2是已经发生的异常的类型。另外从JDK7开始,try语句增加一种支持自动资源管理的新形式,这种形式的try被称为带资源的try。

    2、异常类型

      所有异常类型都是内置类Throwable的子类。因此,Throwable类位于异常类层次的顶部。紧随Throwable之下的是两个子类,他们将异常分为两个不同 的分支。一个分支是Exception类,这个类既可以用于用户程序应当捕获的异常情况,也可以用于创建自定义异常类型的子类。Exception类有一个重要子类,名为RuntimeException类。对于编写的程序而言,这种类型的异常是自动定义的,包括除零和无效数组索引等情况。

      另外一个分支是Error类,该类定义了在常规环境下不希望由程序捕获的异常。Error类型的异常由Java运行时系统使用,以指示运行时环境本身出现了某些错误。堆栈溢出是这类错误的一个例子,它们通常是为了响应灾难性的失败而创建的,程序通常不能处理这类异常。顶级的异常层次如图

                                                                                                 

    3、throws/throw 关键字:

    如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。下面方法的声明抛出一个 RemoteException 异常:

          import java.io.*;

            public class className {

            public void deposit(double amount) throws RemoteException {

            // Method implementation throw new RemoteException();

            }

            //Remainder of class definition

            }

    一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。下面的方法声明抛出 RemoteException 和 InsufficientFundsException:

        import java.io.*;

        public class className {

          public void withdraw(double amount) throws RemoteException, InsufficientFundsException{

          // Method implementation

          }

        //Remainder of class definition

        }

    4、finally关键字

    finally 关键字用来创建在 try 代码块后面执行的代码块。无论是否发生异常,finally 代码块中的代码总会被执行。在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。

  • 相关阅读:
    vector与iterator的一些用法
    动态规划 hdu 1024
    dfs bfs hdu 1045
    hdu 2795
    poj 2828
    线段树染色
    线段树比大小
    A
    ?线程局部变量
    JRE、JDK、JVM 及 JIT
  • 原文地址:https://www.cnblogs.com/sdlzspl/p/7222970.html
Copyright © 2020-2023  润新知