unicorn的java课堂笔记(8)下

作者在 2006-12-17 21:39:00 发布以下内容

3.异常类

所谓异常就是程序运行时可能出现的一些错误,如试图打开一个根本不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误作出处理.

当程序运行出现异常时,java运行环境就用异常类Exception的相应子类创建一个异常对象,并等待处理,例如读取下一个不存在的文

件时,运行环境就用异常类IOException创建一个对象.异常对象可以调用如下方法得到或输出有关异常的信息:

public String getMessage() ,  public void printStackTrace() ,   public String toString()

java使用try-catch语句来处理异常,将可能出现的异常操作放在try-catch语句的try的部分.当try部分中的某个语句发生异常

后,try部分将立刻结束执行,而转向执行相应的catch部分,所以程序可以将发生异常后的处理放在catch部分.try-catch语句可以由

几个catch组成,分别处理发生的相应异常.

try-catch语句格式如下:

try
{
包含可能发生异常的语句
}

catch(ExceptionSubClass1 e)
{
}

catch(ExceptionSubClass2 e)
{
}

...

各个catch参数中的异常类都是Exception的某个子类,标明try部分可能发生的异常,这些子类之间不能由父子关系,否则保留一个含

有父类参数的catch即可.

通过例子掌握try-catch语句的用法,如:

程序代码:


public class E
{   public static void main(String args[ ])
    { int n=0,m=0,t=555;
      try{  m=Integer.parseInt("8888");//Integer.parseInt是可以将数字格式的字符串转换成int型数据
            n=Integer.parseInt("abc789");//"abc"不是属于数字格式的字符串,所以通过Integer.parseInt转换时会出现异常
            t=9999; //发生异常后就立刻进入catch部分,所以t=9999没有被执行
         }
      catch(NumberFormatException e)
         {  System.out.println("发生异常:"+e.getMessage());//得到发生异常的部分
            e.printStackTrace();
            n=123;
         }
      System.out.println("n="+n+",m="+m+",t="+t);
    }
}//结果应该是n=123,m=8888,t=555

在程序中也可以扩展Exception类定义自己的异常类,然后规定哪些方法产生这样的异常.一个方法在声明时可以使用throws关键字声明要产生的若干异常,并在该方法的方法体中具体给出产生异常类的操作,即用相应的异常类创建对象,并使用throw关键字抛出该异常类,导致该方法结束执行.程序必须在try-catch语句中调用能发生异常的方法,其中catch的作用就是捕获throw方法抛出的异常现象.

注意:throw时java的关键字,该关键字的作用就是抛出异常.throw和throws是两个不同的关键字.

下面的例子中,Computer类中有一个计算最大公约数的方法,如果向该方法传递负整数,方法就抛出定义的异常.

程序代码:

class NopositiveException extends Exception//子定义的异常类
{   String message;
    NopositiveException(int m,int n)
    {   message="数字"+m+"或"+n+"不是正整数";
    }
    public String toString()
    {   return message;
    }
}
class Computer
{   public int getMaxCommonDivisor(int m,int n) throws NopositiveException//声明NopositiveException自定义的异常类
    { if(n<=0||m<=0)//不满足条件时候
      &

转帖&&连载 | 阅读 967 次
文章评论,共0条
游客请输入验证码