java_7异常_习题
Java异常面试题 33道

Java异常架构与异常关键字1. Java异常简介Java异常是Java提供的一种识别及响应错误的一致性机制。
Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。
在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪”抛出,异常信息回答了“为什么”会抛出。
2. Java异常架构1. ThrowableThrowable 是 Java 语言中所有错误与异常的超类。
Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情况。
Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等信息。
2. Error(错误)定义:Error 类及其子类。
程序中无法处理的错误,表示运行应用程序中出现了严重的错误。
特点:此类错误一般表示代码运行时 JVM 出现问题。
通常有 Virtual MachineError(虚拟机运行错误)、NoClassDefFoundError(类定义错误)等。
比如 OutOfMemoryError:内存不足错误;StackOverflowError:栈溢出错误。
此类错误发生时,JVM 将终止线程。
这些错误是不受检异常,非代码性错误。
因此,当此类错误发生时,应用程序不应该去处理此类错误。
按照Java惯例,我们是不应该实现任何新的Error子类的!3. Exception(异常)程序本身可以捕获并且可以处理的异常。
Exception 这种异常又分为两类:运行时异常和编译时异常。
运行时异常定义:RuntimeException 类及其子类,表示 JVM 在运行期间可能出现的异常。
特点:Java 编译器不会检查它。
也就是说,当程序中可能出现这类异常时,倘若既"没有通过throws声明抛出它",也"没有用try-catch语句捕获它",还是会编译通过。
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. 编写一个方法,接收一个字符串参数,然后将字符串转换为整数并返回。
如果字符串无法转换为整数,则抛出一个自定义的异常"无法转换为整数"。
第7章Java异常处理

try
产生异常对象
异常类型匹配
catch
继续执行
try/catch 块后的代码段
try/catch块
import java.util.Scanner; 输入:2 0 public class Test1 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入两个整数:"); try{ int x=input.nextInt(); int y=input.nextInt(); int result=x/y; System.out.println("相除的结果为:"+result); System.out.println("程序结束!"); }catch(ArithmeticException e){ System.out.println("除数不能为0!"); } } 除数不能为0! 控制台输出 }
catch
try/catch 块后的代码段
try/catch块
import java.util.Scanner; 输入:10 2 public class Test1 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入两个整数:"); try{ int x=input.nextInt(); int y=input.nextInt(); int result=x/y; System.out.println("相除的结果为:"+result); System.out.println("程序结束!"); }catch(ArithmeticException e){ System.out.println("除数不能为0!"); } } 相除的结果为5 控制台输出 } 程序结束! 算术异常
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 …),只能抛出自己定义的异常对象。
(完整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 程序员都需要掌握的重要技能之一。
异常是在程序运行过程中出现的错误或异常情况,如除零错误、空指针异常等。
在编写 Java 程序时,我们需要预测并处理可能出现的异常,以保证程序的稳定性和可靠性。
下面,我将给出一些 Java 异常练习题,帮助大家巩固和提升自己的异常处理能力。
1. 编写一个方法,接收一个整数参数,如果参数为负数,则抛出一个自定义的异常 NegativeNumberException,异常信息为"输入的数字不能为负数"。
在主方法中调用该方法,并捕获并处理异常。
2. 编写一个方法,接收两个整数参数,计算它们的商,并返回结果。
在方法中捕获并处理可能出现的除零异常,如果除数为零,则抛出一个自定义的异常DivideByZeroException,异常信息为"除数不能为零"。
在主方法中调用该方法,并捕获并处理异常。
3. 编写一个方法,接收一个字符串参数,将其转换为整数并返回。
在方法中捕获并处理可能出现的数字格式异常,如果无法转换为整数,则抛出一个自定义的异常 NumberFormatException,异常信息为"无法将字符串转换为整数"。
在主方法中调用该方法,并捕获并处理异常。
4. 编写一个方法,接收一个文件路径参数,读取文件内容并打印。
在方法中捕获并处理可能出现的文件不存在异常,如果文件不存在,则抛出一个自定义的异常 FileNotFoundException,异常信息为"文件不存在"。
在主方法中调用该方法,并捕获并处理异常。
5. 编写一个方法,接收一个整数数组参数,计算数组中所有元素的平均值并返回。
在方法中捕获并处理可能出现的数组下标越界异常,如果数组下标越界,则抛出一个自定义的异常 ArrayIndexOutOfBoundsException,异常信息为"数组下标越界"。
异常处理流程考试试题

一、选择题1.在Java中,使用哪个关键字来捕获异常?A.catch(正确答案)B.tryC.finallyD.throw2.当一个方法可能抛出多种类型的异常时,这些异常类型在方法声明中应该如何指定?A.使用逗号分隔(正确答案)B.使用分号分隔C.使用“或”符号分隔D.使用“与”符号分隔3.在异常处理中,finally块的主要目的是什么?A.捕获异常B.处理异常C.无论是否发生异常都执行代码(正确答案)D.声明可能抛出的异常4.在Java中,如果一个方法可能抛出检查型异常,那么在方法声明时应该使用哪个关键字来声明这些异常?A.catchB.throws(正确答案)C.tryD.finally5.当一个异常被抛出时,Java虚拟机(JVM)会按照什么顺序查找适当的异常处理器?A.从当前方法开始,沿着调用栈向上查找(正确答案)B.从main方法开始,沿着调用栈向下查找C.从当前方法开始,沿着调用栈向下查找D.从main方法开始,沿着调用栈向上查找6.在Java中,自定义异常类通常是从哪个类继承而来的?ng.Objectng.Throwableng.Exception(正确答案)ng.RuntimeException7.在异常处理中,使用哪个关键字可以重新抛出当前捕获的异常?A.catchB.throwsC.throw(正确答案)D.finally8.在Java中,如果一个方法内部抛出了一个未被捕获的检查型异常,那么这个方法应该如何声明?A.无需特别声明B.使用throws关键字声明可能抛出的异常(正确答案)C.使用try-catch块捕获异常D.使用finally块处理异常。
Java异常(习题)

java异常(习题)练习1. 填空Java 中所有的错误都继承自______类;在该类的子类中,_______类表示严重的底层错误,对于这类错误一般处理的方式是___________;_______类表示例外、异常。
2. 查api,填空异常类java.rmi.AlreadyBoundException,从分类上说,该类属于__________(已检查| 未检查)异常,从处理方式上说,对这种异常___________________;异常类java.util.regex.PatternSyntaxException,从分类上说,该类属于_________(已检查|未检查)异常,从处理方式上说,对这种异常__________________。
4. (try-catch-finally)有如下代码:问:当读入的n 分别为1,2,3,4,5 时,输出的结果分别是什么?5. (自定义异常)创建两个自定义异常类MyException1 和MyException2。
要求:1) MyException1 为已检查异常,MyException2 为未检查异常2) 这两个异常均具有两个构造函数,一个无参,另一个带字符串参数,参数表示产生异常的详细信息。
问:在//1 处,填入以下________代码可以编译通过,在//2 处,填入_________代码可以编译通过。
A. throws java.io.IOExceptionB. throws java.io.FileNotFoundException, java.io.EOFExceptionC. throws java.sql.SQLExceptionD. 不能抛出任何异常。
选择正确答案:A.编译不通过B.编译通过,输出No Exception C.编译通过,输出ex1D.编译通过,输出ex2E.编译通过,输出ex310. *(try-catch,局部变量)有如下代码选择正确答案:A. 编译不通过B. 编译通过,输出-1C. 编译通过,输出0在ma 中,当读入的b 为100 时,输出结果为____,当读入的b 为0 时,输出结果为_____。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5
(2)
public static void main (String args[]) { } try { System.in.read(“这是一个try块!”); }
6
(3)
public static void main (String args[]) { try
{ char ch=(char) System.in.read();
……//其它正常语句 }
catch( Exception e )
{ return; } catch( IOException e )
{ System.err.println(e.toString()); }
}
7
4、设计一个公用的静态方法binToDec(String s): 若s是一个二进制数的字符串,则返回相应的十进制的字符串; 否则,抛出NumberFormatException异常。 5、设计一个主方法main: 输入(或命令行参数)若干个表示浮点数的字符串,输出其中的最小值。 考虑到输入的字符串中有的不能表示浮点数,因此,要求你处理 NumberFormatException异常。 提示: String input = din.readLine(); //键盘输入一个字符串input Float.valueOf(input).floatValue();//将字符串input转换成浮点数 其中,方法Float.valueOf()可能抛出NumberFormatException异常。
8
果有何影响?
(7)说明try-catch-finally结构的执行次序。 (8)若一个方法产生了一个异常,该方法一定要处理该异常吗?若不处理,
那么,你怎么才能使得该方法通过编译?
2
2、写出程序的运行结果 (1) public static void main (String args[]) { try { int i = 0,j=5; System.out.println(j/=i); } catch( ArithmeticException e ) { System.out.println(“捕捉到了一个算术异常”); } catch( Exception e ) { System.out.println(“捕捉到了一个一般异常”); } }
3
(2) public static void main (String args[]) { char[] c={„c‟,‘o‟,‘m‟,‘p‟,‘u‟,‘t‟,‘e‟,‘r‟}; for(int i=1;i<9; i++)System.out.println(c[i]); System.out.println(); System.out.println(“Ok!”); }
第八章 异常
本Hale Waihona Puke 习题11、简答题(1)简述JAVA异常处理机制。
(2)简述异常类Throwable 、Exception 的作用。 (3)系统予定义异常如何抛出?用户自定义异常如何抛出?
(4)在什么情况下,方法头必须声明可能抛出的异常?
(5)若方法内部会抛出某异常,则方法中应该如何处置这种异常? (6)若try语句组中有多个catch子句,这些子句的排列次序对程序的执行效
4
3、下面的程序有错误吗?错在哪里?如何改正?
(1) public static void main (String args[]) { try { char ch=(char) System.in.read(); } catch( ArithmeticException e ) { System.err.println(e.toString()); } }