【javaSE】java异常处理机制

************************************************************************
  ****原文:blog.csdn.net/clark_xu 徐长亮的专栏
************************************************************************

1.1 Exception

java异常结构中定义有throwable类,ExceptionError是其派生的两个子类。其中Exception表示由于非法情况导致的异常,Error表示java运行时候环境出现的错误。

异常处理的目的就是当异常发生时候妥善的终止程序,避免灾难性后果的发生,具体的操作通常包括:

l  通知:向用户通知异常对的发生

l  恢复:保存重要的数据,关闭文件,回滚事务等

l  退出:以恰当的形式退出程序

1.2 try语句

try语句指定了一段代码,改代码就是一次捕获和处理的范围,而它后面的catch语句对应这段代码可能抛出的所有异常进行相应的处理。

1.3 catch语句

每个try语句块可以伴随多个catch语句,用于处理可能产生的不同类型的异常。在catch中声明的异常(cath(SomeException e))封装了异常事件发生的信息,在catch语句块中可以使用这个对象的一些方法获取这些信息,列入getMessage()方法获取有关异常的事件的信息,printStackTrace()方法用来跟踪异常事件发生时候执行堆栈的内容。

1.4 throw语句

第一种场景,当程序发生错误但是无法处理的时候,会抛出这个异常。

第二种场景,主动自行抛出异常:thrown new ArithmeticException();

第三种场景,当异常处理自后,抛出,让下一层异常处理块来捕获。

         主动抛出异常的例子。

         try{

if(dblzero==0){

thrown new ArithmeticException();

}

}

cath(ArithmeticExepton){

         发生除零异常

}

 

1.5 throws声明

对象中有很多方法,这些方法中可能会因为某些错误而引发异常,但是不希望直接在这个方法中处理这些异常,而希望调用这个他的方法来统一处理。这时候可以使用throws关键字声明这个方法抛出的异常。格式为:

pubic static void stringToDate(String str) thows ParseException{

//

}

而在main方法中的调用为:

try{

         StirngToDate(str);

}

catch(ParseException e){

         e.printStackTrace():

}

1.6 finally

finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序其他部分一起,能够对程序的状态做统一的管理。换句话说,无论try语句所指定的程序中是否抛出例外,finally锁指定的代码都要被执行

因此,通常在finally语句中可以信息资源的消除工作,如关闭打开的文件,jdbc连接,删除临时文件等。

1.7 try-catch-finally使用

必须在try块之后添加catch或者finally块;可以嵌套try-catch-finally结构。

try-cath-finnally中可以重新thown抛出异常,待其他catch语句处理。

注,以下情况程序在finally处会异常终止

l  jvm过早终止

l  finally块中抛出未处理的异常

1.8 RuntimeException

java异常也可以分为:可检测异常(编译器强制处理的异常),非检测异常(如RuntimeException),自定义异常。

         常见的RuntimeException

l  IllegalArgumentException

l  NullPointerException

l  ArrayIndexOutOfBoundsException

l  ClassCastException

l  NumberFormatException

在多个catch处理一系列异常,异常的大小关系,大类型的放在后面处理。

1.9 重写方法时的异常处理

         如果使用继承时,在父类别的某个方法上宣告了throws某些异常,而在子类别中重新定义该方法时,可以:

l  重写方法可以不处理异常(重新定义时候,不设定throwns

l  重写方法可以可throws父方法的异常子类

l  重写方法可以throws父方法的某些异常

但是不可以:

l  重新方法throws父方法没有throws的异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值