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 代码块中,可以运行清理类型等收尾善后性质的语句。
Java学习--异常处理及其应用类的更多相关文章
- Java学习-041-颜色工具类(RGB,HEX)
在日常的网页开发中,经常需要进行颜色数值获取.转换,例如获取红色,获取蓝色,获取绿色,RGB转十六进制颜色,十六进制颜色转RGB等,因而在学习过程中,写了一个小工具类,仅供各位小主参考! 多不闲言,直 ...
- Java学习-049-正则工具类
自去年九月份决定再次入学和职业资格进阶,开始备战二者考试至今,以及当下进行中的职称申请,犹如孤独的狼,不断前行在路上,而今凡凡总总的已历8月... 不感慨了,如下为一园友需要的正则工具类,直接上码: ...
- Java学习---异常处理的学习
基础知识 任何一门计算机程序设计语言都包括有绝对正确和相对正确的语句.绝对正确: 指任何情况下, 程序都会按照流程正确执行:相对正确: 程序的运行受到运行环境的制约, 在这种情况下, 需要附加检测和控 ...
- java学习笔记7--抽象类与抽象方法
接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...
- 1.9(java学习笔记)object类及toString()与equals()方法
object类 java中objec是所有类公共的父类,一个类只要没有明显的继承某一类,那么它就是继承object类. 例如 class Person {......};和class Person e ...
- 【原】Java学习笔记031 - 常用类
package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ...
- Java学习笔记day06_自定义类_ArrayList
1.自定义类class 使用类的形式, 对现实中的事物进行描述. 类是引用数据类型. 事物: 方法,变量. 方法:事物具备的功能. 变量:事物的属性. 格式: public class 类名{ //属 ...
- 【Java学习】Font字体类的用法介绍
一.Font类简介 Font类是用于设置图形用户界面上的字体样式的,包括字体类型(例如宋体.仿宋.Times New Roman等).字体风格(例如斜体字.加粗等).以及字号大小. 二.Font类的引 ...
- Java学习笔记(2)——有关类
Java类的高级特性: {Java管理文件机制:类包. 同一个包中的类互相访问时,可以不指定包名. 同一个包中的类不必存放在同一位置,如com.lang.class1和com.lang.class2可 ...
随机推荐
- 题解报告:hdu 4135 Co-prime(容斥定理入门)
Problem Description Given a number N, you are asked to count the number of integers between A and B ...
- yii2 checkbox 的使用实例
使用的是Yii自带的Grid,在使用checkbox希望可以把选中行的id值传到我想要的页面. 首先需要改变key值 $dataProvider->key = 'ID'; button: Htm ...
- Excel 宏练习
任务描述: 利用 Excel 绘制函数图像 f(x)=x^2/3+0.9*(3.3-x^2)^1/2*sin(a*x),并通过按钮事件来刷新图像. 问题分析: 可以参考类似 Matlab 绘图的方式, ...
- 019 [工具软件]窗体置顶 DeskPins
DeskPins:Windows下将任何窗体置顶的工具 官方主页:https://efotinis.neocities.org/deskpins/index.html 官方下载的是一个exe安装包,用 ...
- Spring-bean(二)
命名空间 自动装配 bean之间的关系:继承:依赖 使用外部属性文件 SpEL bean的生命周期 bean的后置处理器 (一)util命名空间 当用list,set等集合时,不能将集合作为独立的be ...
- CSS预处理less基本使用
中文API http://lesscss.cn 变量 @变量名:变量值 @maincolor:#aeeeee; @acolor:#ffffff; @ht200:200px; @ht50:50p ...
- ASP.NET MVC IIS7 403.14-Forbidden
问题描述 IIS 7上发布ASP.NET MVC程序报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容 折腾了半天,提示里面的解决方法是: 如果不希望启用目录浏览,请确保 ...
- rabbitmq的知识点
rabbitmq,分为集群和主从2种. 主从式与集群式的速度差10倍. 每个rabittmq组需要3台机器. 集群式,稳定性高,主从式,速度快. 可以做任务分配,单点锁(二进制树实现). 只有当消息和 ...
- ubuntu破解密码方法
摘要: 开机按住任何键(shift)停住grub菜单,进入advanced option for ubuntu,出现的菜单中,光标移动至…(recovery mode)按E进入编辑,找到ro reco ...
- 推荐一款功能强大的Tomcat 管理监控工具,可替代Tomcat Manager
我们在本地启动Tomcat服务器后,用localhost:访问: 再点Manager App,即可进入Tomcat自带的Manager这个应用,此处可以单独部署/卸载每一个应用.可以看到在Manage ...