第九章-Java异常处理练习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第九章异常
在Java应用程序中,异常处理是保证程序正常、可靠运行的一个重要方面,在前边已经遇到了简单的异常处理。本章实验将主要针对程序中常用的异常的处理及异常的应用。
9.1 实验一:异常处理及应用
实验目的
(1). 了解异常的基本概念、异常的的产生和异常处理的过程。
(2). 基本掌握异常在应用程序中的应用。
实验要求
编写应用程序,在程序中对常见的异常进行捕捉并作相应的处理。
实验内容
实验示例9.1.1 在上一章8.2.1的实验示例测试中,若没有输入答案或输入非数字字符,则在处理过程中会出现数据格式异常,修改实验示例8.2.1创建的Exercises类,添加捕获并处理异常的程序代码。
实现该示例的步骤如下:
⑴简要分析
根据题意,首先需要确定会产生异常的程序段,然后使用try~catch结构进行捕捉和处理异常地处理。由于主要处理数据格式异常,它由输入时的错误引起,所以,在处理异常时,就是返回到输入处,重新输入数据。
⑵根据上述简要分析,给出如下修改后的参考程序代码(Exercise.java):
/*这是一个小学生综合训练题测试的应用程序
*程序的名称:Exercise.java
*程序中捕捉处理数据格式异常(NumberFormatException)
*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class Exercises extends StudentScreen implements ActionListener,KeyListener { int count = 0;
int n1=0,n2=0;
int total=0;
int right=0;
long timenum=0;
Random rand=new Random();
public Exercises(int total)
{
this.total=total;
num1.setText(""+rand.nextInt(100));
num2.setText(""+rand.nextInt(100));
info.setText("测试题目数:"+total+"道");
answer.setEnabled(false); //在没开始答题之前,不得答题
start.addActionListener(this);
next.addActionListener(this);
next.addKeyListener(this);
answer.addKeyListener(this);
}
/***ActionListener接口方法实现***/
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==start)
{
start.setEnabled(false); //使开始按钮失效
answer.setEnabled(true); //开始答题
answer.requestFocus();
count=right=0;
n1=rand.nextInt(100);
n2=rand.nextInt(100);
num1.setText(""+n1);
num2.setText(""+n2);
timenum=System.currentTimeMillis();
}
else if(e.getSource()==next) compute(); //调用compute()成员方法
}
/***KeyListener接口方法实现***/
public void keyPressed(KeyEvent e) //当按一个键时调用它
{
if(e.getKeyCode()!=e.VK_ENTER) return; //如果不是按了Enter键,则不处理 compute(); //调用compute()成员方法
}
public void keyReleased(KeyEvent ke) //当一个键被释放时调用它
{
/*当需要时,输入相关处理代码*/
}
public void keyTyped(KeyEvent ke) //当输入一个字符键时调用它
{
/*当需要时,输入相关处理代码*/
}
/**********成员方法设置运算符***********/
public void setOperator() //设置运算符方法
{
if(n1>50&&n2>50) if(n1