网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 新手入门 > 基础入门 > java初学者实践教程20-异常处理  

java初学者实践教程20-异常处理

2007-07-21  作者:bitsCN整理  来源:  点评 投稿 收藏

    异常处理是个很重要的概念,很多语言中都对异常处理下了很大的功夫。如果你的语法没有写错,编译器是不会报错,而且编译成功。如果编译成功后,运行时发生了错误该怎么处理呢?例如我要加载一个类,而这个类被删了。这种情况就是异常。我们采用try……catch……finally语句作为处理方式。举个异常处理的例子吧。 网管u家u.bitsCN.com

实践:

网管下载dl.bitscn.com

public class TestExceptions {

网管bitscn_com

  public static void main(String[] args) {

网管网www_bitscn_com

    for ( int i = 0; true; i++ ) { 网管下载dl.bitscn.com

      System.out.println("args[" + i + "] is '" + args[i] + "'");

网管u家u.bitsCN.com

    } }} 

网管网www.bitscn.com

网管bitscn_com

    在这里面main方法的参数args是个字符串型的数组,在执行的时候要输入java TestExceptions 100jq 后面的就是参数args[0]就是第一个参数。我们输入java TestException是出现了错误。如图20-1所示, 网管联盟bitsCN_com

网管网www.bitscn.com

    这上说的是数组边界溢出异常,第0个产生错误,因为根本就没有args[0],这个元素。

网管下载dl.bitscn.com

    我们再敲一下java TestExceptions 100jq 如图20-2所示,

网管论坛bbs_bitsCN_com

网管联盟bitsCN_com

    输出了args[0]没有异常了,并且输出了。而循环到i=1时,又发生异常。我们再输入两个参数java TestExceptions chinaitlab  www.bitscn.com 这回两个参数了。同样的道理,args[2]发生异常。

网管网www.bitscn.com

    那么我们如何来捕捉这个异常呢,我们对上述代码做一下简单的修改。

网管网www_bitscn_com

实践: 网管u家u.bitscn@com

public class TestExceptions1 {

中国网管联盟bitsCN.com

  public static void main(String[] args) { 中国网管论坛bbs.bitsCN.com

    try { 网管bitscn_com

      for ( int i = 0; true; i++ ) { 网管下载dl.bitscn.com

       System.out.println("args[" + i + "] is '" + args[i] + "'"); 网管联盟bitsCN_com

      } 网管论坛bbs_bitsCN_com

    } catch (ArrayIndexOutOfBoundsException e) { 网管u家u.bitscn@com

      System.out.println("异常捕捉: " + e);

中国网管论坛bbs.bitsCN.com

      System.out.println("退出...");

中国网管联盟bitsCN.com

    } }}   网管联盟bitsCN@com

网管联盟bitsCN_com

     这回输入刚才那两个参数的话,就不会出现那一堆难懂的英文了。异常已经在我们的掌控之中。否则,有很多异常是足够使内存导毁的。 中国网管联盟bitsCN.com

    这里面我们只使用了try…catch 哪个地方你觉得它有毛病,你就try哪。但是try然后,要catch(捕捉)的。如果事先你想不出它会发生什么异常的话,就用finally. 网管网www_bitscn_com

实践: 中国网管论坛bbs.bitsCN.com

class FinallyDemo { 网管网www_bitscn_com

static void procA() {

网管u家u.bitsCN.com

try {

中国网管论坛bbs.bitsCN.com

System.out.println("inside procA"); 网管联盟bitsCN@com

throw new RuntimeException("demo"); 网管网www_bitscn_com

} finally {

网管下载dl.bitscn.com

System.out.println("procA's finally");

网管u家u.bitsCN.com

} 网管网www_bitscn_com

}

网管网www_bitscn_com

// try程序块内返回 网管u家u.bitsCN.com

static void procB() { 网管bitscn_com

try { 网管联盟bitsCN@com

System.out.println("inside procB"); 网管联盟bitsCN@com

return; 网管网www_bitscn_com

} finally { //结束 网管u家u.bitscn@com

System.out.println("procB's finally");

网管bitscn_com

}

网管u家u.bitsCN.com

}

网管论坛bbs_bitsCN_com

// 执行一个try程序块

网管下载dl.bitscn.com

static void procC() {

网管论坛bbs_bitsCN_com

try { 中国网管联盟bitsCN.com

System.out.println("inside procC");

网管u家u.bitsCN.com

} finally { 网管u家u.bitscn@com

System.out.println("procC's finally");

网管联盟bitsCN@com

} 网管联盟bitsCN@com

}

网管论坛bbs_bitsCN_com

public static void main(String args[]) { 网管下载dl.bitscn.com

try { 网管bitscn_com

procA();

网管联盟bitsCN@com

} catch (Exception e) {

网管联盟bitsCN@com

System.out.println("异常捕捉");

网管联盟bitsCN@com

}

网管bitscn_com

procB(); 网管u家u.bitscn@com

procC(); 中国网管论坛bbs.bitsCN.com

} 网管u家u.bitscn@com

} 

网管下载dl.bitscn.com

中国网管联盟bitsCN.com

     上述源码打包下载 中国网管论坛bbs.bitsCN.com

    如果将方法里抛出异常抛出,使用throws关键字 public void abc() throws exception 也是要用catch来捕捉的。

网管联盟bitsCN_com

实践:

网管u家u.bitsCN.com

class ThrowDemo {

网管下载dl.bitscn.com

static void demoproc() { 网管u家u.bitscn@com

try {

网管网www.bitscn.com

throw new NullPointerException("demo"); 网管论坛bbs_bitsCN_com

} catch(NullPointerException e) { 网管网www_bitscn_com

System.out.println("Caught inside demoproc.");

网管论坛bbs_bitsCN_com

throw e; //重新抛出异常 }}

网管网www_bitscn_com

public static void main(String args[]) {

网管u家u.bitsCN.com

try {

网管联盟bitsCN_com

demoproc();

中国网管论坛bbs.bitsCN.com

} catch(NullPointerException e) {

网管下载dl.bitscn.com

System.out.println("Recaught: " + e);

网管论坛bbs_bitsCN_com

}}}   网管u家u.bitsCN.com

网管联盟bitsCN@com

     19个源码打包下载 中国网管联盟bitsCN.com

    异常类除了jdk提供我们的那些之外,我们自己还可以自定义的。Jdk提供的刚才我们已经见过几个了 ArrayIndexOutOfBoundsException(数组边界溢出),NullPointerException(空指针异常)。要是jdk没有的,我们只有自己定义了。比如说我们现在要用XML开发,那么jdk没有写这方面的异常类,我们就得自己写一个关于XML的异常了。我们下节课讲自定义异常类。 网管论坛bbs_bitsCN_com

java初学者实践教程21-自定义异常类

网管u家u.bitsCN.com

查看原文>>

网管网www.bitscn.com


TAGs   异常   处理   教程   实践   学者       我们   args   try   System.out.println      
 上一篇:Java中的方法和变量在继承时的覆盖问题   下一篇:java初学者实践教程21-自定义异常类
java初学者实践教程20-异常处理 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: