Java异常机制关键字总结,及throws 和 throw 的区别
在Java的异常机制中,时常出现五个关键字:try , catch , throw , throws , finally。
下面将总结各个关键字的用法,以及throw和throws的区别:
(1) try : 该语句需要用大括号{}指定了一段代码,该段代码可能会抛弃一个或多个Exception。Java 要求try语句后面至少需要有一个catch或者finally 块。
在Java 7 中,Java开发人员对try语句进行了增强,使它可以支持对资源的自动回收管理,保证资源总是被正确的释放。具体使用会在后续的博文中分析。
(2) catch : catch语句的参数类似于方法的声明,包括一个Exception类型和一个Exception对象。Exception类型必须为Throwable类的子类,它指明了catch语句所处理的Exception类型;Exception对象则由运行时系统在try所指定的代码块中生成并被捕获,大括号中包含对象的处理,其中可以调用对象的方法。例如:
try{
//此处将抛出一个异常
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("file.bin"));
Object o = ois.readObject();
}
//catch 块对上面抛出异常的处理。
catch(IOException ioe){
ioe.printStackTrace();
}
注意:① catch语句可以有多个,分别处理不同类的Exception。Java运行时系统从上到下分别对每个catch语句处理的Exception类型进行检测,直到找到类型相匹配的catch语句为止。
② 类型匹配指catch到的Exception类型与抛出的Exception对象的类型一致或者是它的父类,因此,catch语句的排列顺序应该是从特殊到一般,否则编译器将会报错。例如:
try{
//此处将抛出一个异常
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("file.bin"));
Object o = ois.readObject();
}
//在这里IOException是Exception 的子类,所以这里没有报错。
catch(IOException ioe){
ioe.printStackTrace();
}
//假如把这个catch块放到上一个catch块前,将会报错。
catch(Exception ex){
ex.printStackTrace();
}
③ 用一个catch语句处理多个例外类型,这时它的例外类型参数应该是这多个例外类型的父类,程序设计中要根据具体的情况来选择catch语句的例外处理类型。
④ 虽然try块后面可以有多个catch块,但是最终只有一个catch块会被执行,绝不可能有多个catch块被执行。
(3) throw and throws : 这两个语句对初学者来说(特别是使用IDE的初学者)来说,很容易混淆。两者区别如下:
throw:总是出现在函数体中,指程序运行中抛出的一个具体的异常Exception,抛出的Exception需要用户来捕获处理。
throws:总是出现在一个函数头中,用来声明一个方法可能抛出的所有异常信息。通常不用显示地捕获异常,系统将自动将异常抛给上级方法。
简单来说:通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。
(4) finally : finally块代表总是会执行的代码块。无论try所指定的程序块中抛不抛出 Exception,也无论catch语句的是否有匹配try块抛出的异常类型,finally所指定的代码都要被执行,它提供了统一的出口。因此通常在finally语句中可以进行资源的清除工作。如关闭打开的文件等。当然,在遇到某些情况下,finally块就不会运行。具体请查看我的另一篇博文。
Java异常机制关键字总结,及throws 和 throw 的区别的更多相关文章
- Java -- 异常的捕获及处理 -- throws与throw关键字
7.2 throws 与 throw关键字 7.2.1 throws 关键字 在定义一个方法时可以使用throws关键字声明,使用throws声明的方法标识此方法不处理异常,而交给方法的调用处进行处理 ...
- 全面理解java异常机制
在理想状态下,程序会按照我们预想的步骤一步一步的执行,但是即使你是大V,你也不可避免出错,所以java为我们提供了异常机制.本文将会从以下几个方面介绍java中的异常机制: 异常机制的层次结构 异常的 ...
- Java 异常机制
Java 异常机制 什么是异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程 为什么要有异常 什么出错了 哪里出错了 ...
- Java异常机制简介
什么是异常? 异常一般是指程序在编译期没有问题,但是在程序运行期出现的错误,一个程序会因为出现异常而终止运行,也就是我们常说的挂掉,在多线程下,异常只会影响所在的线程,对其他线程没有影响. Java异 ...
- 【55】java异常机制剖析
一.为什么要使用异常 首先我们可以明确一点就是异常的处理机制可以确保我们程序的健壮性,提高系统可用率.虽然我们不是特别喜欢看到它,但是我们不能不承认它的地位,作用.有异常就说明程序存在问题,有助于我们 ...
- [Java学习笔记] Java异常机制(也许是全网最独特视角)
Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...
- Java异常机制及异常处理建议
1.Java异常机制 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通过API中Throwable类的众多子类 ...
- JAVA基础学习之throws和throw的区别、Java中的四种权限、多线程的使用等(2)
1.throws和throw的区别 throws使用在函数外,是编译时的异常,throw使用在函数内,是运行时的异常 使用方法 public int method(int[] arr) throws ...
- day08(异常处理,创建异常,finally,throws和throw的区别)
异常处理, 异常的产生 运行时异常:程序运行中产生的异常:RuntimeException类. 编译时异常:程序在编译时产生的异常:除了RuntimeException类 其他都是编译时产生的 ...
随机推荐
- java并发编程实战:第三章----对象的共享
我们不仅仅希望防止某个线程使用某个状态时,另一个线程在修改它:我们还希望某个线程修改了某个状态后,其他线程能够看到状态的变化. 一.可见性 重排序:在没有同步的情况下,编译器.处理器可能对代码的执行顺 ...
- jsp request 获取路径
这篇教程不错:http://zjutsoft.iteye.com/blog/1084260 自己试验如下: System.out.println("-----------------serv ...
- C#——Socket
最近公司让我搞个socket小程序(服务端). 主要的功能:客户端发字符串到服务端,服务端接收后在界面上显示. 参照了网上许多代码,自己从中修改整理代码. public Form4() { Initi ...
- c#设计模式之代理模式(Proxy Pattern)
引言 代理这个词语,大家在现实世界已经频繁的接触过,例如火车站代理售票点,因为这些代理售票点的存在,我们不必要去火车站的售票处就可以查询或者取到火车票.代理点本身是没有能力生产车票的,我们在代理处享受 ...
- 【转】Sql Server去除所有空格
详细链接:https://shop499704308.taobao.com/?spm=a1z38n.10677092.card.11.594c1debsAGeak 1.普通空格: 前后的空格,使用LT ...
- WPF 背景网格图
利用DrawingBrush来画出背景网格图 <DrawingBrush Viewport="0,0,80,80" ViewportUnits="Absolute& ...
- 73. 矩阵置零 leetcode JAVA
题目: 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ...
- JavaWeb -jsp文件和内置对象的解析
jsp文件和内置对象的解析 对page解析 JSP九大内置对象(自带,无需new) 1 out:输出对象 2 request:请求对象,存储“客户端像服务端发送的请求信息” 3 response:响应 ...
- java中二维数组遍历
public class Demoshuzu2 { public static void main(String[] args) { int[][] arr2 = {{78,79,65, ...
- robot framework踩坑记录
一.报错:FAIL : 'Return' is a reserved keyword. 给Retrun加上中括号即可 二.报错:True != true 三.报错 /Library/Python/2. ...