博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习--异常处理及其应用类
阅读量:5056 次
发布时间:2019-06-12

本文共 2290 字,大约阅读时间需要 7 分钟。

  异常是运行时在代码序列中引起的非正常状况,换句话说,异常是运行时错误。在不支持异常处理的计算机语言中,必须手动检查和处理错误----通常是通过使用错误代码,等等。这种方式既笨拙又麻烦。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 代码块中,可以运行清理类型等收尾善后性质的语句。

 

转载于:https://www.cnblogs.com/sdlzspl/p/7222970.html

你可能感兴趣的文章
Maven启用代理访问
查看>>
Primary definition
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
发送请求时params和data的区别
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
如何增强你的SharePoint 团队网站首页
查看>>
FZU 1914 Funny Positive Sequence(线性算法)
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
MySQL服务读取参数文件my.cnf的规律研究探索
查看>>
java string(转)
查看>>
__all__有趣的属性
查看>>
BZOJ 5180 [Baltic2016]Cities(斯坦纳树)
查看>>
写博客
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>