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("输入错误!欲判断的数不能为负!");
}
}
浙公网安备 33010602011771号