Java中异常处理学习--Java编程

时间:2015-7-28 19:09:29

  核心提示:4.1Java异常概念lJava异常是Java提供的用于处理程序中错误的一种机制。l所谓错误是指在程序运行的过程中发生一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存在)。l设计良好的程序...


4.1 Java异常概念

l Java异常是Java提供的用于处理程序中错误的一种机制。

l 所谓错误是指在程序运行的过程中发生一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存在)。

l 设计良好的程序应该在异常发生时提供处理这些错位的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。

l Java程序的执行过程中如出现异常事件,可以生成一个异常类,该异常类封装了异常事件的信息并将被提交给Java运行时的系统,这个过程称为抛出(throw)异常。

l 当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。

4.2 异常类型

4.3 Java的内置异常

除了java.lang包里定义的异常处理外,在其它java包中还有异常处理。其实,几乎每个java包里都有相应的异常类来处理相应的异常,但是RuntimeException异常以及其派生的子类是不用处理的,多少从RuntimeException里派生的异常都可以自动调用。注意:我们在处理异常时,可以用catch来捕捉异常,即在运行过程中如果系统发现异常就会将其捕捉下来进行人为的处理;也可以用throw来抛出异常,即在运行过程中某个语句出现了异常如找不到文件等,系统会自动抛出该异常而继续向下运行程序。这两种方式各有千秋,通过捕捉异常我们可以更清楚地了解程序运行中存在的异常,以便我们更好的改进;抛出异常可以保证程序的正常运行。但在此提醒大家还是选择catch异常,这样如果这个软件以后有什么bug也好处理。给大家举个例子,就像我们的ATM机一样,如果我们在取钱过程中程序运行出现异常,我们当然是希望系统抛出异常,以便我们向银行反映情况来解决我们遇到的问题,这种方式就是catch异常的好处之一。同时,如果是抛出异常,系统会抛出一大堆专业的术语来,这样用户会怎样想,大家可以想象一下,如果一个人去取钱,突然间屏幕上显示一大堆我们Java语言抛出异常时的专业术语,这个会怎么想。所以,通过catch异常,我们可以修改异常提示语以便用户更好地理解。我们再以取钱为例,如果我们选择程序抛出异常,如果一个人去取钱,突然间程序运行出现异常,但这个异常被抛出了,但现在的问题是抛出后在不知不觉间你的银行卡余额变少了你会怎么想。所以,建议大家在写程序时尽量选择catch异常。

4.4 Java异常举例

import java.io.*;

 

public class TestEx {

public static void main(String[] args) {

try {

System.out.println(2 / 0);

} catch (ArithmeticException ae) { // 自己定义的异常类对象名,系统将异常对象传递给ae里面,ae相当于形参

System.out.println("出错了");

ae.printStackTrace();// 常用的办法:把错误的堆栈信息打印出来!系统默认也是打印误的堆栈信息。

}

}

}

运行结果:

出错了

java.lang.ArithmeticException: / by zero

at TestEx.main(TestEx.java:7)

 

4.5 异常的捕获和处理 

在Java语言的异常处理机制里面包括异常捕获和异常处理两部分。通过异常处理我们可以人为地处理捕获到的异常,当然也可以通过相应的方法来处理。

捕获并处理异常语句格式如下:

try {……; } //可能引发异常的语句

catch(Exception1 e1) {……; }//对异常进行处理

catch(Exception2 e2) {……; }

......

finally {......; } //异常处理结束前的执行程序体 


 

Java免费学习   Java自学网 http://www.javalearns.com

关注微信号:javalearns   随时随地学Java

或扫一扫

随时随地学Java


 


作者:不详 来源:网络
    你是从哪里知道本网站的?
  • 网友介绍的
  • 百度搜索的
  • Google搜索的
  • 其它搜索过来的
  • 网址输错了进来的
  • 太忙了不记得了
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • java学习网(www.javalearns.com) © 2014 版权所有 All Rights Reserved.
  • Email:javalearns@163.com 站长QQ:1356121699 晋ICP备14003680号-3
  • java学习网部分内容来自网络或网友发布,如侵犯了您利益,请发邮件至:javalearns@126.com,我们尽快处理!
  • Java学习网
  • 网站统计
  • 晋公网安备 14042902000001号