第九章-Java异常处理练习Word版

合集下载

java异常处理练习题

java异常处理练习题

java异常处理练习题Java异常处理练习题Java是一种面向对象的编程语言,广泛应用于软件开发领域。

在Java编程中,异常处理是一个非常重要的概念。

通过合理处理异常,我们可以提高程序的可靠性和健壮性。

本文将介绍一些Java异常处理的练习题,帮助读者更好地理解和掌握异常处理的知识。

1. 编写一个程序,从命令行获取一个整数,并将其平方输出。

如果输入的不是整数,则抛出一个自定义的异常"InvalidInputException",并提示用户重新输入。

```javaimport java.util.Scanner;class InvalidInputException extends Exception {public InvalidInputException(String message) {super(message);}}public class SquareNumber {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);try {System.out.print("请输入一个整数: ");int num = scanner.nextInt();System.out.println("平方结果: " + num * num);} catch (Exception e) {scanner.nextLine(); // 清除输入缓冲区System.out.println("输入无效,请重新输入。

");main(args); // 递归调用自身,重新执行程序}}}```2. 编写一个方法,接收一个整数数组和一个整数n作为参数,返回数组中第n 个元素的值。

如果n超出数组的索引范围,则抛出一个自定义的异常"ArrayIndexOutOfBoundException",并提示用户重新输入。

Java异常处理课后作业

Java异常处理课后作业
public static void main(String[] a) {
int i=0, j=1, k; //k=i/j;
try {
k = i/j; // Causes division-by-zero exception //throw new Exception("Hello.Exception!"); }
动手动脑:多层的异常捕获-1
动手动脑:多层的异常捕获-2
动手动脑2:
当有多层嵌套的finally时,异常在不同的层次抛出,在不同的位置抛出,可能会导致不同的finally语句块执行顺序。
动手动脑3:
当存在try中有throw new Exception(...)finally不会执行。
动手动脑4
import java.util.Scanner; public class Score { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("输入学生成绩(整数):"); try { int num=input.nextInt(); if(num>100) { System.out.println("超出范围!"); } else if(num<=100&&num>=90) { System.out.println("优!"); } else if(num<90&&num>=80) { System.out.println("良!"); } else if(num<80&&num>=70) { System.out.println("中!"); } else if(num<70&&num>=60) { System.out.println("及格!"); } else { System.out.println("不及格!"); }

lesson09-02 Java异常和异常处理 -Java异常处理

lesson09-02 Java异常和异常处理 -Java异常处理

Java 核心技术第九章Java异常和异常处理第二节Java异常处理1异常处理(1)•异常处理–允许用户及时保存结果–抓住异常,分析异常内容–控制程序返回到安全状态•try-catch-finally: 一种保护代码正常运行的机制。

•异常结构–try…catch(catch可以有多个,下同)–try…catch…finally–try…finally•try必须有,catch和finally至少要有一个•try:正常业务逻辑代码。

•catch: 当try发生异常,将执行catch代码。

若无异常,绕之。

•finally: 当try或catch执行结束后,必须要执行finally。

•查看例子TryDemo.java•catch块可以有多个,每个有不同的入口形参。

当已发生的异常和某一个catch块中的形参类型一致,那么将执行该catch块中的代码。

如果没有一个匹配,catch也不会被触发。

最后都进入finally块•进入catch块后,并不会返回到try发生异常的位置,也不会执行后续的catch块,一个异常只能进入一个catch 块。

•catch块的异常匹配是从上而下进行匹配的。

•所以一般是将小的异常写在前面,而一些大(宽泛)的异常则写在末尾。

•查看MultipleCatchDemo.java。

•try结构中,如果有finally块,finally肯定会被执行。

•try-catch-finally每个模块里面也会发生异常,所以也可以在内部继续写一个完整的try结构。

•方法存在可能异常的语句,但不处理,那么可以使用throws来声明异常。

•调用带有throws异常(checked exception)的方法,要么处理这些异常,或者再次向外throws,直到main函数为止。

•参看ThrowsDemo.java和MyExceptionTest.java•一个方法被覆盖,覆盖它的方法必须抛出相同的异常,或者异常的子类。

java异常处理试题及参考答案

java异常处理试题及参考答案

异常处理练习题一、选择题1.java中用来抛出异常的关键字是(C)A、tryB、catchC、throwD、finally2.关于异常,下列说法正确的是(A)A、异常是一种对象B、一旦程序运行,异常将被创建C、为了保证程序运行速度,要尽量避免异常控制D、以上说法都丌对3.(A)类是所有异常类的父类。

A、4.javaA、try{C、5.{{“除0}A、程序将输出第15行的异常信息B、程序第10行出错C、程序将输出“b=42”D、程序将输出第15和19行的异常信息6.下列程序的执行,说法正确的是(D)class ExMulti{static void procedure(){try{int c[]={1};c[42]=99;}catch(ArrayIndexOutOfBoundsException e){“数组超越界限异常:”+e);}}public static void main(String args[]){“除0}ABCD7.{{}{try{procedure();}catch(IllegalAccessExcepton e) ___________{“捕获:”+e);}}8.对于catch子句的排列,下列哪种是正确的(B )A、父类在先,子类在后B、子类在先,父类在后C、有继承关系的异常不能在同一个try程序段内D、先有子类,其他如何排列都无关9.在异常处理中,如释放资源、关闭文件、关闭数据库等由(C )来完成。

A、try子句B、catch子句C、finally子句D、throw子句10.当方法遇到异常又不知如何处理时,下列哪种说法是正确的(C )A、捕获异常B、抛出异常C、声明异常D、嵌套异常11.哪个关键字可以抛出异常?(C)JVM. int i=0;String greetings[]= {“Hello world!”,“No,I mean it!”,“HELLO WORLD!!”};while(i<4){____try________{}____catch__(ArrayIndexOutOfBoundsException e){i=-1;}finally{}i++;}}三、判断题1. ( F )程序中抛出异常时(throw …),只能抛出自己定义的异常对象。

java 异常 练习题

java 异常 练习题

java 异常练习题Java是一种面向对象的编程语言,在软件开发中广泛应用。

异常处理是Java中一个重要的概念,可以帮助我们有效地处理错误和异常情况,提高程序的可靠性和稳定性。

本文将介绍一些Java异常的练习题,帮助读者巩固对异常处理的理解和应用。

一、简答题1. 请解释什么是Java中的异常。

异常(Exception)是在程序运行过程中发生的错误或异常情况。

通常情况下,Java程序在运行过程中会按照预定的代码逻辑进行执行,但在某些情况下,可能会出现无法继续执行的错误或特殊情况,这就是异常。

2. 请列举一些常见的Java异常类型。

常见的Java异常类型包括:ArithmeticException(算术异常)、NullPointerException(空指针异常)、ArrayIndexOutOfBoundsException(数组越界异常)、NumberFormatException(数字格式异常)、IOException(输入输出异常)等。

3. 异常处理的机制有哪些?Java中的异常处理机制主要包括:try-catch语句、throws关键字和finally块。

通过try-catch语句可以捕获并处理异常,避免程序的崩溃;throws关键字可以声明方法可能抛出的异常,由调用者进行处理;finally块中的代码无论是否出现异常都会执行,常用于资源的释放。

二、编程题请编写一个Java程序,模拟银行账户的操作过程,并处理可能出现的异常情况。

具体要求如下:1. 定义一个BankAccount类,包含以下成员变量和方法:- 成员变量:balance(double类型,表示账户余额)- 方法:deposit(double amount)(存款),withdraw(double amount)(取款)2. 在deposit方法中,通过参数amount指定要存入的金额。

如果amount小于等于0,抛出一个自定义的异常NegativeAmountException,提示用户存款金额必须大于0。

(完整word版)异常处理练习题

(完整word版)异常处理练习题

异常处理练习题一、选择题1.java中用来抛出异常的关键字是A、tryB、catchC、throwD、finally2.关于异常,下列说法正确的是A、异常是一种对象B、一旦程序运行,异常将被创建C、为了保证程序运行速度,要尽量避免异常控制D、以上说法都不对3.()类是所有异常类的父类。

A、ThrowableB、ErrorC、ExceptionD、AWTError4.java语言中,下列哪一子句是异常处理的出口A、try{…}子句B、catch{…}子句C、finally{…}子句D、以上说法都不对5.下列程序的执行,说法正确的是public class MultiCatch{public static void main(String args[]){try{int a=args.length;int b=42/a;int c[]={1};c[42]=99;System.out.println(“b=”+b);}catch(ArithmeticException e){System.out.println(“除0异常:”+e);}catch(ArrayIndexOutOfBoundsException e){System.out.println(“数组超越边界异常:”+e);}}}A、程序将输出第15行的异常信息B、程序第10行出错C、程序将输出“b=42”D、程序将输出第15和19行的异常信息6.下列程序的执行,说法正确的是class ExMulti{static void procedure(){try{int c[]={1};c[42]=99;}catch(ArrayIndexOutOfBoundsException e){System.out.println(“数组超越界限异常:”+e);}}public static void main(String args[]){try{procedure();int a=args.length;int b=42/a;System.out.println(“b=”+b);}catch(ArithmeticException e){System.out.println(“除0异常:”+e);}}}A、程序只输出第12行的异常信息B、程序只输出第26行的异常信息C、程序将不输出异常信息D、程序将输出第12行和第26行的异常信息7.下面程序抛出了一个“异常”并捕捉它。

java异常处理编程题

java异常处理编程题

Java异常处理编程题异常处理概述在Java编程中,异常处理是一种机制,用于捕获和处理程序运行过程中可能发生的异常情况。

异常是指在程序执行过程中发生的错误或意外情况,例如除零错误、空指针引用等。

异常处理可以提高程序的健壮性和可靠性,使程序在出现异常时能够进行适当的处理,避免程序崩溃或产生不可预知的结果。

Java中的异常是通过异常类的实例来表示的,异常类是从ng.Exception类派生的。

Java中的异常分为两种类型:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。

受检异常是指在编译时需要处理的异常,必须在代码中显式捕获或声明抛出;非受检异常是指在运行时可能发生的异常,可以选择捕获处理,但不强制要求。

异常处理的语法在Java中,异常处理使用try-catch-finally语句块来实现。

try块用于包含可能抛出异常的代码,catch块用于捕获并处理异常,finally块用于定义无论是否发生异常都必须执行的代码。

try {// 可能抛出异常的代码} catch (ExceptionType1 e1) {// 处理ExceptionType1类型的异常} catch (ExceptionType2 e2) {// 处理ExceptionType2类型的异常} finally {// 无论是否发生异常都会执行的代码}在catch块中,可以根据需要捕获不同类型的异常,并进行相应的处理。

多个catch块按照从上到下的顺序进行匹配,一旦匹配成功就会执行相应的处理代码。

如果没有匹配的catch块,异常将会被传递到上层调用栈中进行处理。

finally块中的代码无论是否发生异常都会执行,通常用于释放资源或进行清理操作。

finally块可以省略,但是在某些情况下,例如需要确保资源被正确关闭时,建议使用finally块。

编程题要求根据题目要求,我们需要编写一个Java程序,实现以下功能:1.读取一个文本文件的路径作为输入;2.读取文件内容,并将文件内容转换为大写形式;3.将转换后的内容写入一个新的文件。

java异常处理考试

java异常处理考试

Java异常处理技术一、选择题1.请问所有的异常类皆继承哪一个类?(A)A.ng.Throwable B.ng.ExceptionC.ng.Error D.java.io.Exception2.哪个关键字可以抛出异常?(B)A.transient B.throw C.finally D.catch3.对于已经被定义过可能抛出异常的语句,在编程时(A)。

A.必须使用try/catch语句处理异常,或用throw将其抛出。

B.如果程序错误,必须使用 try/catch语句处理异常。

C.可以置之不理。

D.只能使用try/catch语句处理。

4.下面程序段的执行结果是什么?(B)public class Foo{public static void main(String[] args){try{return;}finally{System.out.println("Finally");}}}A.编译能通过,但运行时会出现一个例外。

B.程序正常运行,并输出 "Finall y"。

C.程序正常运行,但不输出任何结果。

D.因为没有catch语句块,所以不能通过编译。

5.下面是一些异常类的层次关系:ng.Exceptionng.RuntimeExceptionng.IndexOutOfBoundsExceptionng.ArrayIndexOutOfBoundsExceptionng.StringIndexOutOfBoundsException假设有一个方法X,能够抛出两个异常,Array Index和String Index异常,假定方法X中没有try-catch语句处理这些异常,下面哪个答案是正确的?( A B)A.方法X 应该声明抛弃ArrayIndexOutOfBoundsException和StringIndexOutOf Bounds- Exception。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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<n2)op.setText("+");//n1,n2>50,n1<n2进行加法运算 else op.setText("-") ; // n1>n2进行减法运算else if(n1>50) if(n2>10) op.setText("-"); //n1>50,n2>10进行减法运算 else op.setText("/"); // n1>50,n2<10进行除法运算else if(n2>50) if(n1>10) op.setText("+"); //n2>50,n1>10进行加法运算 else op.setText("*"); //n2>50,n1<=10进行乘法运算else if(n1>n2&&n2<10) op.setText("/"); // n1>n2,n2<10进行除法运算else if(n1<10||n2<10) op.setText("*"); //n1<=10或n2<=10 进行乘法运算else op.setText("+"); //其他进行加法运算}/**********成员方法:运算及答案处理***********/public void compute(){float x=0; //定义变量try //本题正确结果的计算与实际答题结果的比较{if(op.getText().equals("+")) x=n1+n2;else if(op.getText().equals("-")) x=n1-n2;else if(op.getText().equals("*")) x=n1*n2;else if(op.getText().equals("/")) x=n1/n2;if(x==Float.parseFloat(answer.getText())) right++;}catch(NumberFormatException e){ JOptionPane.showMessageDialog(null,"数据格式错误,请重新输入数据!!!");answer.requestFocus();return;}catch(Exception e1){ JOptionPane.showMessageDialog(null,e1.toString());return;}count++;if(count==total) //测试结束{JOptionPane.showMessageDialog(null,"总题目数"+total+";答对"+right+"道,花费时间"+(System.currentTimeMillis()-timenum)/1000+"秒!!!");System.exit(0);}n1=rand.nextInt(100)+1; //产生下一题n2=rand.nextInt(100)+1;num1.setText(""+n1);num2.setText(""+n2);setOperator(); //设置运算符号answer.setText("");answer.requestFocus();}}⑶编译Exercise.java程序,生成Exercise.class类文件,以供其他应用程序所用。

⑷程序及分析在compute()方法中使用了try~catch结构捕捉并处理可能出现的数据格式异常(NumberFormatException)和其他异常(Exception),当在结果栏中没有输入内容或输入非数字字符按“Enter”键或单击“下一题”按钮时,获取结果栏中的字符串并将它转换为数值时会产生数据格式异常(NumberFormatException),处理的办法是使用对话框提示错误信息,并定位到结果栏让训练者重新输入题目答案。

⑸编写测试程序,测试Exercise类的功能。

测试程序代码如下:import javax.swing.*;public class TestExercises extends JFrame{TestExercises(){add(new Exercises(30)); //选30道题进行训练setVisible(true);pack();setDefaultCloseOperation(3);}public static void main(String [] args){new TestExercises();}}编译并运行测试程序,会出现如图9-1a的对话框,单击“开始”按钮,进入如图9-1b的答题界面,可以输入题目答案,然后按“Enter”或单击“下一题”按钮进入下一题,若在答题时没输入答案或输入非数字字符,则会出现如图9-1c的消息对话框,此时,可单击“确定”按钮,返回到应答栏,重新输入应答数据。

最后在完成答题后,会出现如图9-1d的结果对话框。

自由练习9.1 修改上一章自由练习8.1建立的输入学生信息程序,捕捉并处理当输入入学成绩时的数据错误。

实验示例9.1.2 编写程序,实现如图9-2的用户界面,完成一个简单的计算器应用程序。

要求:可以进行+、=、*、/四种运算;为了操作方便,输入运算数后按“Enter”键连续进行下一数运算,并保留用鼠标单击“下一个”按钮连续9-1a 选择测试题目数对话框9-1b 答题屏幕界面9-1c 异常信息对话框9-1d 结果信息对话框进行下一数运算;并要求输入的运算数在0~1000之间。

相关文档
最新文档