java 语言程序设计-李尊朝 第9章 异常处理 课后习题

1.何为异常?为什么要进行异常处理?

   异常指程序运行过程中出现的非正常现象,例如用户输入错误、除数为零。

  由于异常情况总是难免的,良好的应用和序除了具备用户所要求的基本功能处,还应该具备预见并处理可能发生的各种异常的功能。

2.Error和Exception类有何不同?

  Error类及派生的子类具有特征:它们处理的是较少发生的系统内部错误,程序员通常对它们无能为力,只能在其发生时由用户按照系统提示关闭程序

   Exception类及其派生的子类具有特征:它们解决是由程序本身及环境所产生异常,它们可以被捕获并进行相应的处理。

3.什么是抛出异常?如何抛出异常?

    抛出异常指的是当程序运行出现错误时,系统产生与该错误对应的异常类对象。异常对象中包含了必要信息,如所发生的异常类型及异常发生时程序的运行状态

    。当生成的异常类对象传递给java运行时,系统将由相应的机制进行处理,以确保不会产生非正常中断情况。

4.设计一个程序,其功能是从命令行输入整数字符串,再将该整数字符串转换为整数,输入的数据可能具有以下格式:

   12345

   123     45

   123xyz456

   对这种异常进行捕获和处理。

import java.io.*;
public class UseException
{
	public static void main(String[] args) 
	{
		System.out.println("请输入一个整数字符串");
		try                                   
            {                                  //此处可能会产生IOException异常
 BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
            int a=Integer.parseInt(in.readLine()); //此处可能会产生NumberFormatException异常
			System.out.println("您输入的整数是:"+a);
        }
       catch(IOException e)                      //捕获IOException异常
         {
            System.out.println("IO错误");
         } 
        catch(NumberFormatException ne)         //捕获NumberFormatException异常
         { 
			System.out.println("您输入的不是一个整数字符串");
		 }
	}
}

5.设计方法boolean prime(int n),用来判断数n是否为素数,若为素数,返回true;若不是素数,返回false;若n<0,抛出ArgumentOutOfBounda异常。

public class UseDefineException 
{
    public static boolean prime(int n) throws ArgumentOutOfBoundException
    {
        if(n<0)
         {
            ArgumentOutOfBoundException ae=new ArgumentOutOfBoundException();
            throw ae;                           //抛出这个异常
         }
        else
         {
            boolean isPrime=true;
            for(int i=2;i<n;i++)
              if(n%i==0)
                {
                   isPrime=false;
                   break;
                }
            return isPrime;
        }
    }
    public static void main(String[] args) 
     {
        if(args.length!=1)                    //输入格式错误
         {
          System.out.println("输入格式错误!请按照此格式输入:java UseDefineException m");
          System.exit(0);                     //输入格式错误,系统退出!
        }
        int m=Integer.parseInt(args[0]);       //读入整数
        try
         {
            boolean result=prime(m);            //调用方法判断是否为素数
            System.out.println("对您输入的整数"+m+"是否为素数的判断结果是:"+result);
         }
        catch(ArgumentOutOfBoundException e)    //捕捉可能抛出的异常
         {
            System.out.println("异常名称:"+e.toString());
         }
    }
}
     //自定义异常类
class ArgumentOutOfBoundException extends Exception 
{
    ArgumentOutOfBoundException()
     {
        System.out.println("输入错误!欲判断的数不能为负!");
     }
}
posted @ 2013-04-15 16:29  elite_2012  阅读(999)  评论(0编辑  收藏  举报