动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Java 短路运算符和非短路运算符.
.JFreeChart在Webwork中的应用.
.Java正则表达式详解.
.简析JAVA的XML编程.
.客户机/服务器系统.
.非打印字符.
.Java编程准则.
.用jscript对表单数据进行utf-8编.
.工作流模型分析---聚合模型.
.使用JAVA中的动态代理实现数据库.
.Eclipse快速上手指南之使用CVS(.
.JAVA环境配置大全.
.JDBC 入门.
.NaN 属性 (Global).
.扩展Eclipse的Java开发工具(二).
.简述JAVA对象的产生与使用.
.足球战术之observer及memento篇.
.javaswing9.27课程.
.JBuilder2005单元测试体验之测试.
.Redirect output(stdout/stderr).

Java程序设计基础之异常处理部分

发表日期:2008-1-5 |



  早期的编程语言(比如C语言)没有异常处理,通常是碰到错误返回一个非凡的值或设定一个标志,并以此判定是不是有错误产生。随着系统规模的不断扩大,这种错误处理已经成为创建大型可维护程序的障碍了。于是在一些语言中出现了异常处理机制,比如在Basic中的异常处理语句“on error goto”,而Java则在C++基础上建立了新的异常处理机制。
  
  Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。这种机制为复杂程序提供了强有力的控制方式。同时这些异常代码与“常规”代码分离,增强了程序的可读性,编写程序时也显得更灵活。
  
  异常处理还有一个好处是在你不能确定和处理异常时,你可以不处理,而把问题提交上去。另一方面,异常处理机制使得错误处理代码更有条理,更便于维护。下面,我们看看在Java中如何处理异常。
  
  Java中的异常类
  在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕捉到这个异常并进行处理。
  
  Throwable类有两个标准子类:java.lang.Error和java.lang.Exception?即错误和异常。错误?Error类?一般是指虚拟机相关的问题,如系统崩溃、虚拟机出错误、动态链接失败等,这一类错误无法恢复或不可能捕捉,将导致应用程序中断。异常?Exception类?则是指一些可以被捕捉且可能恢复的异常情况,如数组下标越界?ArrayIndexOutOfBoundsExcepton?、数字被零除产生异常?ArithmeticException?、输入/输出异常?IOException?等。
  
  提示:Java编译器要求Java程序必须捕捉或声明所有非运行时的异常,如:FileNotFoundException、IOException等。因为,对于这类异常来说,假如程序不进行处理,可能会带来意想不到的结果。但运行时出现异常可以不做处理,因为这类异常很普遍,全部处理可能对程序的可读性和运行效率产生影响。
  
  Java异常处理形式
  Java的异常处理是通过5个要害词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,假如出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。
  
  下面是Java异常处理程序的基本形式:
  
  try ?
  //执行时程序块
  ?
  catch ?ExceptionType1e??
  //对ExceptionType1的处理
  ?
  catch ?ExceptionType2e??
  //对ExceptionType2的处理
  throw ?e??
  //再抛出这个“异常”
  ?
  finally?
  
  try程序块和catch语句
  碰到一个try语句,“异常”的框架就放到堆栈上面,直到所有的try块内的语句都完成。假如下一级的try语句没有对某种“异常”进行处理, 堆栈就会展开,直到碰到有处理这种“异常” 的try语句。在try程序后面,应包含一个catch子句来指定你想要捕捉的“异常”的类型。
  
  提示:捕捉异常的第一步就是用try?…?选定你要捕捉异常的范围,在执行时,括号内的代码会产生异常对象并被抛出。然后你就可以用catch块来处理异常了。
  
  throw语句和throws语句
  throw语句用来明确地抛出一个“异常”。首先,你必须得到一个Throwable类或其它子类产生的实例句柄, 通过参数传到catch子句,或者用new语句来创建一个实例。
  
  下面是throw语句的通常形式:
  
  throw ThrowableInstance
  
  提示:执行throw语句后,运行流程将立即停止,throw的下一条语句也将暂停执行。这里new运算符用于创建一个Throwable类的实例,在后文的面向对象编程一文中将具体讲解。
  
  throws语句用来标明一个成员函数可能抛出的各种“异常”。对大多数Exception子类来说,Java编译器会强迫你声明在一个成员函数中抛出的“异常”的类型。假如“异常”的类型是Error或RuntimeException,或它们的子类,这个规则不起作用。假如你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型。
  
  提示:当然,你可能对上面的说明不是很明白,不过不要紧,编译运行下面的Java程序(已经为你做了具体的注释)你会理解很多!
  
  现在我们用下面的例程来说明问题:
  
  class ThrowsDemo ? //类名,相应的java源文件应该保存成:ThrowsDemo.java
  static void procedure? ? throws Illegal
  AccessException //throws语句
  ?//抛出IllegalAccessException类型的异常
  System.out.println?″inside procedure″?? //输出文本信息,以说明是在执行proced
  ure方法时抛出了异常
  throw new IllegalAccessException?″de
  mo″?? //新生成一个Throwable类实例,然后抛出异常
  ?
  public static void main?String args??? //main??方法开始,程序从此处执行
  ? try ? //try语句块开始
  procedure? ?? //调用procedure方法,该方法将Throw(抛出)异常信息
  ?
  catch ?IllegalAccessException e?
  ? //处理IllegalAccessException类型的异常,catch语句块
  System.out.println?″caught ″ + e??
  ?
  编程并执行程序,其过程如下:
  
  E?\javacode\exception>java ThrowsDe
  mo
  inside procedure
  caught java.lang.IllegalAccessExceptio
  n? demo
  
  提示:如上面的代码所示,我们用了一个完整的程序来说明在Java程序中如何使用try…catch…throw等语句。Try?…?里产生的异常被捕捉了下来,然后在catch????块里进行处理(这里只是输出异常信息)。throws IllegalAccessException标明程序将抛出一个IllegalAccessException类型的异常。IllegalAccessException e生成一个异常对象,然后用System.out.println输出异常信息。
  
  finally语句
  有时为了确保一段代码不管发生什么异常都要被执行,可以使用要害词finally来标出这样一段代码。一个成员函数返回到调用它的成员函数,或者通过一个没捕捉到的异常,或者通过一个明确的return语句,finally子句总是恰好在成员函数返回前执行。
  
  下面我们以一个比较完整的异常处理程序来说明上面所述的各种异常处理语句的使用问题:
  
  class ExceptionDemo ? //异常使用示例,保存为ExceptionDemo.java
  static void procA? ?
  ?
  try?
  System.out.println?″inside procA″??
  throw new RuntimeException?″demo″?
  ??//抛出异常
  finally ?
  System.out.println?″procA's finally″?? ??//注重:不管发生什么等会执行!!
  static void procB? ?
  ? try ?
  System.out.println?″inside procB″??
  return?? //返回,实际上是在finally语句执行完后才返回
  finally ?
  System.out.println?″procB's finally″????
  public static void main?String args???
  ? try?
  procA????
  catch?Exception e??
  System.out.println?″catch?″+e???
  procB??? ??
  
  提示:在上面的完整程序中,finally后的大括号内的代码是任何情况下都会执行的。另外,在procB? ?中,return?语句并没有立即返回,这一点应该非凡注重。你可以亲自动手,执行上面的程序试试(编译和执行类似于上例)?
  
  到目前为止,关于Java的流程控制已经完全讲完了。要真正理解并把握它们只有经过大量的练习。而好的方法就是修改上面的每一个程序,让它们实现你想要的功能,并在此基本上理解Java的流程控制。而要写好Java程序,熟悉使用Java的流程控制和异常处理是非常要害的。所以在这两期中,我们用大量的例程来说明Java语言是如何使用流程控制语句的,并且对流程控制中经常使用的异常处理语句做了简单的介绍。
上一篇:JFC/Swing活学活用之创建自定义图像组件 人气:856
下一篇:正则表达式常用功能—查询提取替换分割 人气:1425
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-12-4 PhpCMS2008 bulid 081203 简体中
2008-12-4 Menalto Gallery v1.5.10 多国语
2008-12-4 Phpcms2008 bulid 081203 简体中
2008-12-4 乘风多用户计数器 v3.92 (Acc)
2008-12-4 乘风多用户计数器 v3.92 (Sql)
2008-12-4 BBSxp 2008 8.0.5 SP2 Build 081
2008-12-4 ASBLOG v2.5 bulid 081118(1201)
2008-12-4 非零坊幽默短信 v3.4
2008-12-4 红茶巴士(公交)查询系统 v3.0
2008-11-29 Tencent Traveler 4.4
2008-11-29 龙卷风网络收音机 v3.0.0.0
2008-11-29 Intel Chipset Software Install
2008-11-29 TweakVI 1.0 Build 1100
2008-11-29 Opera 9.62 Build 10469
2008-11-29 MPlayer WW编译版 SVN-r28044(20
2008-11-29 NetTools网络工具v1.0.0破解版
2008-11-29 3DGallery三维体验1.1破解版
2008-11-29 SecretBook保密本v1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | OPEN参数生成器 | 弹出式窗口代码产生器 | 密码登录生成器 | 在线按钮生成器 | Meta标签生成器 | 多色彩特效字代码生成器 | 网页代码调试器 | 在线FTP登陆 | Flash取色器 | 配色代码对照表 | 配色辞典 | CSS生成器 | 广告代码 | 框架网页代码生成器 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | 在线调色板 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 元素周期表 | 健康查询 | 世界时间 | 万年历 | 二十四节气 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2009 www.knowsky.com All rights reserved | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成