用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
rodgersnow的公告
编程——无论魏晋,路漫漫其修远兮,大家请带上粽子 <ul class = "list"> <li class = "listitem"> <MARQUEE direction=up onmouseout=start(); onmouseover=stop(); scrollAmount=1 scrollDelay=15 width=170 height=100> <strong>2005.9.13</strong><br><a href="http://blog.csdn.net/rodgersnow/archive/2005/09/13/479274.aspx">Java初级入门教程(连载一)</a><br> <strong>2005.9.14</strong><br><a href="http://blog.csdn.net/rodgersnow/archive/2005/09/14/480556.aspx">Java初级入门教程(连载二)</a><br> <strong>2005.9.15</strong><br><a href="http://blog.csdn.net/rodgersnow/archive/2005/09/16/482054.aspx">Java初级入门教程(连载三)</a><br> <strong>2005.9.16</strong><br><a href="http://blog.csdn.net/rodgersnow/archive/2005/09/16/482075.aspx">Java初级入门教程(连载四)</a><br> <strong>2005.9.17</strong><br><a href="http://blog.csdn.net/rodgersnow/archive/2005/09/17/482609.aspx">Java初级入门教程(连载五)</a><br> <strong>2005.10.30</strong><br><a href="http://blog.csdn.net/rodgersnow/archive/2005/10/30/519563.aspx">Java默认参数另类实现法</a><br> <strong>2007.9.14</strong><br><a href="http://blog.csdn.net/rodgersnow/archive/2007/09/14/1784577.aspx">9月13日开发-Action层传值问题</a><br> <strong>2007.9.25</strong><br><a href="http://blog.csdn.net/rodgersnow/archive/2007/09/25/1799466.aspx">9月25日开发-Struts Validate验证框架</a><br> <strong>2007.9.26</strong><br><a href="http://blog.csdn.net/rodgersnow/archive/2007/09/26/1801202.aspx">9月26日开发-Sturts Validate框架心得</a><br> <strong>2007.11.2</strong><br><a href="http://blog.csdn.net/rodgersnow/archive/2007/11/02/1863395.aspx">11月2日开发-利用Java生成静态HMTL页面</a><br> </MARQUEE>
文章分类
C++
C++ Builder开发者
开源盛世—VC源代码下载网
步步为赢
Java
JavareSearch资源网
Java中文网站
Java资源网
中国Java联盟(论坛)
高校网站
NIIT官方站点
西安交通大学-程序设计语言
重庆电子科技职业学院
资源站
中国盟动力
爱书吧(巨多的精品电子书)
编程爱好者网站
论文资源网
存档

原创  Java初级入门教程(连载五) 收藏

Java初级入门教程(连载五)

作者:Rodger Snow [原创]

完成时间:2005年8月1日

不知不觉7月份过去了,这个暑假过得还真是累人!嘿嘿,废话不说了,开始我们本次学习:异常处理。

所谓异常,就是指在程序中捕捉可能出错的代码段来进行处理,使程序避免运行错误,甚至崩溃的事情发生。当然你也可以用IF或CASE之类的语句自己处理,不过在JAVA中有某些编程,是必须用异常处理机制来解决的,不然编译会出现错误的。了解和学会使用异常处理是学习后面知识的基础哦~~老实说,异常处理并不难的,我们主要学习的是JAVA异常类中几个基本异常,并不需要大家掌握自定义异常等,所以大家可以放心,绝对不会太难的~

举几个简单的常见异常例子:当你处理除法运算时,除数为0就会出错异常;当然试图处理一个为null的对象,也会出现异常;当你定义一个大小为3的一维数组,试图试问它的第4个元素就会出现异常等等之类,这些全都需要事先预知处理的,否则程序可能会出错!像前面这几个分别是算术条件异常、空对象异常和数组下标越界异常,此外还有几个常见的异常。我这就把JAVA中几个基本异常简单的描述一下:

异常

描述

ArithmeticException

当出现异常算术条件时产生

NullPointerException

当应用程序企图使用需要的对象处为空时产生

ArrayIndexOutOfBoundsException

数组下标越界时产生

ArrayStoreException

当程序试图存储数组中错误的类型数据时产生

FileNotFoundException

试图访问的文件不存在时产生

IOException

由于一般I/O故障而引起的,如读文件故障

NumberFormatException

当把字符串转换为数值型数据失败时产生

OutOfMemoryException

内存不足时产生

SecurityException

当小应用程序(Applet)试图执行由于浏览器的安全设置而不允许的动作时产生

StackOverflowException

当系统的堆栈空间用完时产生

StringIndexOutOfBoundsException

当程序试图访问串中不存在的字符位置时产生

 

上述表格中出现的异常基本上都是JAVA中我们暂时可能遇到的异常了。接下来学习异常的使用方法了。

在JAVA中处理异常的关键字是:

·try    把可能引发异常的语句括在其中

·catch  捕获到try中语句异常后,通过1个或多个catch来解决相应的异常

·finally    不管异常是否发生都会执行finally中的语句

可能大家还是不太明白上面三条异常处理关键字的含义,那我就打个比喻:假设在一个山洞里有未知的动物,不知道是什么,现在来了一个叫catch动作协会的专门人员进行探查,还有一个叫finally的科学家要等待消息。首先他们把一个叫try的捕获装置放入山洞中,再通过try中的诱饵把动物引诱出来,这个叫try的装置一旦捕获这个动物就会马上通知catch协会进行相应的处理。不管try是否捕获到动物,也不管catch是否进行处理,最后都必须要打电话通知finally的科学家。呵呵~异常处理大概也是这样子工作的了,不知道大家明白没有……没关系,下面我们看源代码,一个简单的异常处理程序,大家再好好体会一下,很容易理解的!

//因为异常类是定义在java.lang包中的,所以不需要导入,系统自己能识别

class CustomerCareExecutive //定义接收客户数据类

{

    String Name;

    int Age;

    public void displayDetails() //显示数据函数

    {

        System.out.println(Name);

        System.out.println(Age);

    }

}

public class ExecutiveCollection

{

    CustomerCareExecutive exObjects[]; //定义客户类对象数组

    public ExecutiveCollection()

    {

        try //因为下面的某些语句可能会出现异常,所以用try括起来

        {

            /*给数组分配三个空间(请注意,程序只有加上下面这行代码才是正确的!现在是学习异常处理,所以暂时先注释掉,呆会大家可以恢复后运行看看)*/

            //exObjects=new CustomerCareExecutive[3];

            for(int ctr=0;ctr!=3;ctr++)

            {

                exObjects[ctr]=new CustomerCareExecutive(); //产生空对象异常

            }

            exObjects[0].Name="Rodger";

            exObjects[0].Age=Integer.parseInt("10+11"); //产生字符串转换为数字失败异常

            exObjects[1].Name="Micier";

            exObjects[1].Age=18;

            exObjects[2].Name="Lisa";

            exObjects[2].Age=16;

        }

        catch(NullPointerException e) //对空对象指针的处理

        {

            System.out.println("空指针异常!");

        }

        catch(NumberFormatException e) //对转换失败的处理

        {

            System.out.println("字符串转换为数值异常!");

        }

        finally //不管是否出错异常都会处理这里的语句

        {

            System.out.println("最后处理!");

        }

    }

    public void displayCollection()

    {

            for(int ctr=0;ctr!=3;ctr++)

            {

                exObjects[ctr].displayDetails(); //注意,如果前面的对象数组为空,这里也会引发异常的!

            }

    }

    public static void main(String args[])

    {

        ExecutiveCollection collectionObj;

        collectionObj=new ExecutiveCollection();

        collectionObj.displayCollection();

        System.out.println("所以记录打印完成!");

    }

}

上面程序就是异常的用法,我们往后学习的教程,大部分都需要用到异常处理,不然可能会编译出错的,不过不要紧,如果编译出错的话,它会告诉你错误信息,如果是没有加哪个异常,编译器会提示的!所以这些不必担心,大家慢慢研究吧!在这里我不打算讲自定义异常,因为它不像系统定义的系统这样可以直接使用,需要抛出自定义异常才能进行异常捕获和处理。再说一般情况下真的很少会用到的,当然哪位朋友有兴趣的话,可以跟我联系吧,我再跟你简单的说一下就是啦~目前来说,一般都是用系统定义的异常。下回我们讲文件读写,个人认为,有些难度哦~

发表于 @ 2005年09月17日 08:24:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:我真不孝 | 新一篇:国庆游成都

  • 发表评论
  • 评论内容:
  •  
Copyright © rodgersnow
Powered by CSDN Blog