您的位置:首页 > 编程语言 > Java开发

java异常分析(一)

2015-07-12 14:14 253 查看
程序的运行过程当中会遇到一些问题,而这些问题不是仅仅依靠代码就能避免的,比如客户输入数据的格式,读取文件是否存在,网络是否保持通畅等问题。

异常:将程序执行过程中发生的不正常情况叫异常。(程序设计过程中的语法错误和逻辑错误不是异常)。

举例分析:“在使用File类的方法时,如创建文件时可能会出现一种情况:要创建的文件指向了U盘中一个路径,当程序运行时,有人将U盘拔掉了!这时我们的程序执行就会出错,即抛出异常。异常情况是指程序在运行时,可能由与外部系统的条件变更(与我们一厢情愿所设想的不一设)而导致程序可能会出错的情况,如我们的代码要连结数据库,但数据库未启动,要创建目录,操作系统上却己存在同名的真实文件;即所谓异常是指可能(仅是可能)由与外部系统的,导致程序可能出错(中断运行)的原因。”

java程序在执行过程中可能发生的异常事件可以分两类:

(1)Error:java虚拟机无法解决的严重问题。如JVM系统内部错误,资源耗尽(栈溢出,堆溢出)等问题。程序中不处理。

(2)Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以由程序员使用针对性的代码进行处理。如:空指针访问,读取的文件不存在,网络不畅通等问题。要求在程序设计时,考虑对这些异常的处理。

Exception也可以分为两类:

编译时异常(执行javac.exe命令时出现异常)

运行时异常(执行java.exe命令时出现异常)

注意:当程序执行时,如果出现异常,那么异常后面的程序不再执行。

异常处理方式(抓抛模型):

1.“抛”:当执行代码时,一旦出现异常,就会在代码处生成一个异常类的对象,并将此对象抛出;

抛出异常对象后,程序终止执行;

此异常类对象抛给方法调用者-最终抛给Java虚拟机(自动抛出 手动抛出);

2.“抓”:抓住上一步抛出来的异常类的对象,如何抓?即为异常处理方式,java提供了两种异常的处理方法。

异常处理方式一:

try{

//可能出现异常的代码

}catch(Exception1 e1){//此处即为“抓”

//处理方法1

}catch(Exception2 e2){

//处理方法2

}finally{

//一定要执行的代码

}

注意:

(1)try内声明的变量是局部变量,只能在try语句中使用

(2)finally是可选的

(3)catch语句内部是对异常对象的处理(两种默认结构:getMessage()和printStackTrace());

(4)可以有多个catch语句,try语句中抛出的异常类对象由上至下的匹配catch语句中异常类的类型,

一旦匹配,就执行catch语句中代码,执行完后,跳出后面所有catch语句。

(5)处理完异常后,其后的代码可以继续执行。

(6)当try语句中抛出多个异常时,要有多个catch语句分别抓取异常对象,如果异常类型为并列关系,catch语句顺序可以不考虑,如果为继承关系,将子类放在父类上面,否则报错。

(7)finally语句中存放的是一定会被执行的代码,不管try,catch中是否仍有异常未被处理,以及是否有return语句。

(8)try-catch语句是可以嵌套的。

ps:对运行时异常来说,可以不进行显式示处理。

对编译时异常来说,必须要显式示处理。

异常处理方式二:

在方法的声名处,显示的抛出该异常对象的类型。

格式: (例子)public void method2() throws FileNotFoundException,IOException{};

当此方法内部出现异常的时候,会抛出异常类的对象,给方法的调用者。

异常类的对象可以逐层向上抛出,直至抛给java虚拟机,过程当中可以用try-catch-finally语句解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: