第九章-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。

java 异常 练习题

java 异常 练习题

java 异常练习题Java 异常练习题Java 异常处理是每个 Java 程序员都需要掌握的重要技能之一。

异常是在程序运行过程中出现的错误或异常情况,如除零错误、空指针异常等。

在编写 Java 程序时,我们需要预测并处理可能出现的异常,以保证程序的稳定性和可靠性。

下面,我将给出一些 Java 异常练习题,帮助大家巩固和提升自己的异常处理能力。

1. 编写一个方法,接收一个整数参数,如果参数为负数,则抛出一个自定义的异常 NegativeNumberException,异常信息为"输入的数字不能为负数"。

在主方法中调用该方法,并捕获并处理异常。

2. 编写一个方法,接收两个整数参数,计算它们的商,并返回结果。

在方法中捕获并处理可能出现的除零异常,如果除数为零,则抛出一个自定义的异常DivideByZeroException,异常信息为"除数不能为零"。

在主方法中调用该方法,并捕获并处理异常。

3. 编写一个方法,接收一个字符串参数,将其转换为整数并返回。

在方法中捕获并处理可能出现的数字格式异常,如果无法转换为整数,则抛出一个自定义的异常 NumberFormatException,异常信息为"无法将字符串转换为整数"。

在主方法中调用该方法,并捕获并处理异常。

4. 编写一个方法,接收一个文件路径参数,读取文件内容并打印。

在方法中捕获并处理可能出现的文件不存在异常,如果文件不存在,则抛出一个自定义的异常 FileNotFoundException,异常信息为"文件不存在"。

在主方法中调用该方法,并捕获并处理异常。

5. 编写一个方法,接收一个整数数组参数,计算数组中所有元素的平均值并返回。

在方法中捕获并处理可能出现的数组下标越界异常,如果数组下标越界,则抛出一个自定义的异常 ArrayIndexOutOfBoundsException,异常信息为"数组下标越界"。

java异常处理题目

java异常处理题目

java异常处理题目异常处理是Java程序中的重要概念。

在程序运行过程中,可能会出现各种不可预知的异常情况,如文件不存在、数组越界、空指针等。

为了保证程序的稳定性和可靠性,我们需要编写异常处理机制来处理这些异常情况。

以下是一些关于Java异常处理的题目,让我们来逐个解答。

题目一:编写一个方法,接收一个整数数组作为参数,计算数组中所有元素的平均值,并返回结果。

如果数组为空,则抛出一个自定义的异常EmptyArrayException。

解答一:```javaclass EmptyArrayException extends Exception {public EmptyArrayException(String message) {super(message);}}public class AverageCalculator {public static double calculateAverage(int[] array) throws EmptyArrayException { if (array.length == 0) {throw new EmptyArrayException("数组为空");}int sum = 0;for (int num : array) {sum += num;}int average = sum / array.length;return average;}}```题目二:编写一个方法,接收一个文件名作为参数,读取文件内容并返回字符串。

如果文件不存在,则抛出一个FileNotFoundException异常。

解答二:```javaimport java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class FileContentReader {public static String readFileContent(String fileName) throws FileNotFoundException, IOException {BufferedReader reader = null;StringBuilder content = new StringBuilder();try {reader = new BufferedReader(new FileReader(fileName));String line;while ((line = reader.readLine()) != null) {content.append(line).append("\n");}} finally {if (reader != null) {reader.close();}}return content.toString();}}```题目三:编写一个方法,接收两个整数作为参数并返回它们的商。

java异常处理试题及答案

java异常处理试题及答案

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

A、ThrowableB、ErrorC、ExceptionD、AWTError4.java语言中,下列哪一子句是异常处理的出口(C)A、try{…}子句B、catch{…}子句C、finally{…}子句D、以上说法都丌对5.下列程序的执行,说法错误的是(C)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.下列程序的执行,说法正确的是(D)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.下面程序抛出了一个“异常”并捕捉它。

异常处理作业

异常处理作业

异常处理作业第九章异常处理一、选择题1、无论是否发生异常,都需要执行( C )A、try语句块B、catch语句块C、finally语句块D、return语句2、异常处理变量( C )。

A、应用public关键字B、可以应用protected关键字C、可以应用private关键字D、只能在异常处理方法内使用。

3、通常的异常类是(A )A、ExceptionB、exceptionC、CommonExceptionD、ExceptionShare4、异常产生的原因很多,常见的有(A )。

A、程序设计本身的错误B、程序运行环境改变C、软、硬件设置错误D、以上都是5、(C)是除0异常。

A、RuntimeExceptionB、ClassCastExceptionC、ArihmetticExceptionD、ArrayIndexOutOfBoundException6、下列描述中,对使用异常处理的原因描述错误的有( D )A、将错误处理程序与正常程序流分开,增加程序的可读性B、可以容易地指出异常在何处处理C、减轻程序员处理异常的任务D、增加语言的复杂机制7、读下面代码,哪个选项是正确的( C )import java.io.*;public class Test2{public static void main(String []args)throws IOException{i f(args[0]==”hello”)throw new IOException();}}A、没有错误,程序编译正确B、编译错误,不能够在main方法中抛出异常C、编译错误,IOException是一个系统异常,不能够由application程序产生D、没有输出结果8、当变异并且运行下面程序时会出现什么结果?( A )public class ThrowsDemo{static void throwMethod() {System.out.print("Inside throwMethod");throw new IOException("demo");}public static void main(String [] args){try{throwMethod();}catch(IOException e){System.out.println("Cauht"+e);}}}A、编译错误B、运行错误C、编译成功,但不会打印出任何结果D、没有输出结果9、执行下面程序的结果是什么?其中a=4,b=0 ( B )public static void divide(int a,int b){try{ int c = a / b; }catch(Exception e){System.out.println("Exception");}finally{System.out.println("Finally");}}A、打印Exception finallyB、打印FinallyC、打印ExceptionD、没有输出结果10、假定一个方法会产生非RuntimeException异常,如果希望把异常交给调用该方法的方法处理,正确的声明方式是什么?( A )A、t hrow Exc eptionB、throws ExceptionC、new ExceptionD、不需要指明什么11、阅读下面的代码段、try{tryThis();return;}catch(IOException x1){System.out.println(“exception 1”);Return;}catch(Exception x2){System.out.println(“exception 1”);Return;}finally{System.out.println(“finally”)}如果tryThis()抛出一个IOException,那么屏幕的输出是什么?( A )A、”exception 1”后面跟着”finally”B、” exception 2”后面跟着“finally”C、”exception 1”D、”exception 2””12、下列哪些内容不是异常的含义?( B )A、程序的语法错B、程序编译或运行中所发生的异常事件C、程序预先定义好的异常事件D、程序编译错误13、自定义的异常类可从下列哪个类继承?( D )A、Error类B、AWTErrorC、VirtualMachineErrorD、Exception及其子集14、当方法遇到异常又不知如何处理时,下列哪种做法是正确的?( A )A、捕获异常B、抛出异常C、声明异常D、嵌套异常15、如要抛出异常,应用下列哪种子句?( B )A、catchB、throwC、tryD、finally16、对于catch子句的排列,下列哪种是正确的?( B )A、父类在先,子类在后B、子类在先,父类在后C、有继承关系的异常不能在同一个try程序段内D、先有子类,其他如何排列都无关17、下列选项中属于异常的关键字是( C )A、publicB、InputStream C 、ExceptionD、abstract18、下列选项中属于Exception异常的是(D )A、ArithmeticExceptionB、nullPointerExceptionC、classcastExceptionD、以上都是19、以下是异常的处理,哪个选项是正确的(D)A、book()throws exceptionB、book(int a)exceptionC、book()throwsD、book()throw exception20、所有属于( B )子类的异常都是非检查型异常A、RuntimeExceptionB、ExceptionC、ErrorD、以上答案都不对21、Java编译程序对于( A )需要加强捕获或声明要求A、异常B、错误C、非检查型错误D、检查型异常22、如果试图捕获多个错误,可在( A )语句块的后面使用多个()语句块A、try catchB、catch tryC、finally tryD、以上答案都不对23、将需要处理异常作为( B )语句块的一个参数来进行声明A、tryB、catchC、finallyD、以上都不对24、try语句块可以(C )A、拥有惟一的一个catch语句块B、多个finally语句块C、一个或多个catch语句块D、以上答案都不对25、所有RuntimeException子类的异常都属于( C )A、致命错误 B 、逻辑错误 C 、检查型错误D、非检查型错误26、( D )是所有Exception和Error类的共同超类A、ThrowableB、CheckedExceptionC、CatchableD、RuntimeException27、Error和Exception是Throwable的两个直接子类,其中下列属于Error的直接子类的是( D )A、ThreadDeathB、LinkageErrorC、VirtualMachineErrorD、以上都是28、在try代码中声明的变量只能在该块的大括号( B )使用A、结束之前B、结束之后C、不清楚D、不用执行29、假定一个方法可能会产生非RuntimeException异常,如果希望把异常交给调用该方法的方法处理,正确的声明方式是(D)A、throws ExceptionB、throw ExceptionC、new ExceptionD、不需要指明什么30、try代码块中包含的是可能引起一个或多个异常代码,能够抛出异常的代码必须位于( A )代码块中。

java 异常处理题目

java 异常处理题目

java 异常处理题目----42a38900-6ea4-11ec-b4a3-7cb59b590d7d java异常处理题目疯狂翔软件定制例外章节标题一.选择题:1.对于异常的定义,以下描述中最正确的一个是()a)b)c)d)程序编译错误程序语法错误程序自定义的异常事件在程序编译或运行过程中发生的可预测或不可预测的异常。

会导致程序中断,影响程序的正常运行2.抛出异常时,应该使用下列哪个子句a) a)a)b)c)d)a)b)c)d)a)b)c)d)a)b)c)d)a)a)b)c)d)a)b)c)d)a)b)c)d)athowb)接住c)finallyd)投掷3.自定义异常类时,可以通过对现列哪一项进行继承()错误类别B)小程序类别声明的异常b)捕获异常c)异常类及其子集d)断言错误类c)抛出异常d)嵌套异常4.当方法无法确定如何处理董事时,如何处理董事。

5.关于try-and-catch条款的安排,以下哪项是正确的子类异常在前,父类异常其后父类异常在前,子类异常其后只能有子类异常超类异常和子类异常不能同时出现在同一个try程序段中。

算术异常FileNotFoundException nullpointerexceptionioexception一个程序抛出异常,任何其他在运行中的程序都可以捕获算术溢出需要进行异常处理当在方法中检测到错误,但您不知道如何处理错误时,该方法会声明一个异常。

程序未捕获的任何异常最终都将由默认处理程序处理。

记忆耗尽。

不需要异常处理。

如果除数为零,则需要进行异常处理异常处理通常比传统的控制结构流效率更高编译器要求必须设计实现优化的异常处理动态链接失败b)虚拟机错误(c)线程死锁d)被零除6.在以下java语言的常见异常类中,属于异常检测的是()7.下面描述中,错误的一项是()8.以下描述中正确的一个是9.下列错误不属于error的是10.下列描述中,错误的一个是()抛出异常后,将不再执行异常抛出点之后的代码任何没有被程序捕获的异常将最终被缺省处理程序处理异常还可以产生于java虚拟机内部的错误一个try代码段后只能跟有一个catch代码段把错误处理代码从正常代码中分离出来11.在下面的描述中,不属于Java异常处理机制的优点之一是b)c)d)a)a)a)b)c)d)a)二、多项选择题按错误类型和差别分组捕获和处理不可预测的错误可以处理任何类型的错误。

《Java程序设计》第9章 Java异常处理

《Java程序设计》第9章 Java异常处理
import java.io.*; public class Test9_3{
public static void main(String[] args) { FileInputStream in=new FileInputStream("myfile.txt"); int b; b = in.read(); while(b!= -1) {
finally代码块无论是否发生异常都有执行
9
try、catIcnhsp和ur fEidnuacaltlioyn语句说明
try 捕获异常的第一步是用try{…}语句块选定捕获异常的范围。
catch
Java在异ca常tch处语理句块中是对异常对象进行处理的代码,每个try语句
块可以伴随一个或多个catch语句,用于处理可能产生的不同 类型的异常对象。与其它对象一样,可以访问一个异常对象的 成员变量或调用它的方法。
12
Java异常处理
异Ins常pur处E理duc举ati例on
程序Test9_2运行结果:java Test9_2
lisa bily kessy index err this is the end Press any key to continue...
13
Java异常处理
IOInEsxpucreEpduticoatnio异n 常处理举例(未添加捕获)
告诉方法调用 者会发生异常
public int fn1(int a,int b) throws Exception
{
return division(a,b);
}
}
public class ExcepTest7 {
public static void main(String[] args) {

java异常练习

java异常练习

1、自己动手编写一个数组越界的异常。

public class Test1{public static void main(String args[]){int arr[ ]=new int[5];arr[10]=7;System.out.println(“end of main() method !!”);}}编译时不会产生错误,运行时出现错误信息:Exception in thread “main” ng.ArrayIndexOutOfBoundsException at Test1.main(******) 2、在练习1的基础上,修改代码,实现如果抛出异常,就输出index out of bound!public class Test2{public static void main(String args[]){try{int arr[ ]=new int[5];arr[10]=7;}catch(ArrayIndexOutOfBoundsException e){System.out.println(“index out of bound!”);}}}注意:不写catch而直接写finally也能实现。

3、在练习2的基础上,在catch语句里实现输出异常信息。

public class Test3{public static void main(String args[]){try{int arr[ ]=new int[5];arr[10]=7;}catch(ArrayIndexOutOfBoundsException e){System.out.println(“index out of bound!”);System.out.println(“Exception=”+e);System.out.println(“Exception=”+e.getMessage()”);System.out.println(“Exception=”+e.toString()”);}}}蓝色部分均可以实现。

第九章-Java异常处理练习

第九章-Java异常处理练习

第九章异常在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类文件,以供其他应用程序所用。

java异常处理编程题

java异常处理编程题

java异常处理编程题Java是一种面向对象的编程语言,异常处理是Java中重要的一部分。

在编程过程中,可能会出现各种错误和异常情况,如数组越界、空指针引用、除零错误等等。

为了应对这些异常情况,Java提供了异常处理机制,使程序在出现异常时能够进行相应的处理,保证程序的稳定性和可靠性。

Java的异常处理机制基于异常类和异常处理器。

在程序中,我们可以使用try-catch语句块来捕获和处理异常。

try块中包含可能出现异常的代码,catch块中则包含异常的处理逻辑。

当try块中的代码发生异常时,程序会立即跳转到对应的catch块中执行异常处理逻辑。

在Java中,异常被分为两种类型:受检异常(checked exception)和非受检异常(unchecked exception)。

受检异常是指在编译时就需要进行处理的异常,如IOException、SQLException等。

对于受检异常,我们必须使用try-catch语句块或者在方法签名中声明异常,否则编译器会报错。

非受检异常是指在运行时才会发生的异常,如NullPointerException、ArrayIndexOutOfBoundsException等。

对于非受检异常,我们可以选择捕获并处理,也可以不处理,交给上层调用者处理。

在异常处理过程中,我们可以使用多个catch块来捕获不同类型的异常。

catch块中的参数是异常类型,用于匹配抛出的异常。

当程序抛出异常时,会从上到下依次匹配catch块中的异常类型,找到匹配的块并执行对应的处理逻辑。

如果没有匹配的catch块,异常会继续向上层调用者抛出,直到找到合适的处理位置。

除了try-catch语句块,Java还提供了finally块和throw语句来增强异常处理的能力。

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

throw语句用于手动抛出异常,可以在程序中主动触发异常情况,然后由上层调用者进行处理。

java异常练习题

java异常练习题

java异常练习题Java异常练习题在Java编程中,异常处理是非常重要的一部分。

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

为了加深对Java异常处理的理解,下面我将给大家提供一些常见的Java异常练习题。

1. 编写一个程序,要求用户输入两个整数,然后计算它们的商并输出。

如果用户输入的第二个数为0,则抛出一个自定义的异常"除数不能为0"。

```javaimport java.util.Scanner;public class DivideByZero {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入两个整数:");int num1 = scanner.nextInt();int num2 = scanner.nextInt();try {if (num2 == 0) {throw new DivideByZeroException("除数不能为0");}int result = num1 / num2;System.out.println("结果为:" + result);} catch (DivideByZeroException e) {System.out.println(e.getMessage());}}}class DivideByZeroException extends Exception {public DivideByZeroException(String message) {super(message);}}```2. 编写一个方法,接收一个字符串参数,然后将字符串转换为整数并返回。

如果字符串无法转换为整数,则抛出一个自定义的异常"无法转换为整数"。

  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之间。

相关文档
最新文档