这是我的入学题的做法,你参考下!
- package com.itheima;
- /**
- * 第七题:
- * 有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个方法a,
- * 请在这个方法中调用b,然后抛出异常。在客户端有一个类为TestC,有一个方法为c ,请在这个方法中捕捉异常的信息。
- * 完成这个例子,请说出java中针对异常的处理机制。
- *
- * 答:在Java中,当产生异常时,Java会将异常的信息封装成对象,该对象中包好该异常的相关信息;
- * Java中针对异常的处理主要为两种方法:
- * 1.将异常抛出,不做任何处理,而是将该问题抛给调用该方法的上级方法进行处理,
- * 通过关键字throws在方法上进行表明,当throws在主函数上表明时,表示出现
- * 异常主函数也不做处理,而抛给JVM,这时JVM就会停止工作,并将异常信息在控制台打印.
- *
- * 2.使用try...catch语句对异常信息进行捕捉,如果在某一方法中要对可能产生的异常进行捕捉,
- * 则将可能产生异常的语句使用try{}代码块进行包裹,当try{}代码块中产生异常时.就会获得一个
- * 异常对象,此时如果try中的异常类型和catch{}代码块要捕捉的异常类型一致或为其子类,这执行
- * catch{}代码块中的内容,可以将异常信息打印或进行针对性处理.
- * 另外:一般在try...catch后会跟finally代码块,finally代码块中的内容是无论是否发生异常
- * 一定会执行的内容,当某些程序发生异常后,可能其资源无法正常释放,此时可以再finally代码块中
- * 进行资源关闭的操作.
- *
- *
- *
- */
- public class Test7 {
- public static void main(String[] args) {
- int n=4;
- // 调用ClassC中的c()方法
- ClassC.c(n);
- }
- }
- class ClassC{
- // 创建c()方法,调用ClassA中的a()方法,并对其进行try...catch处理
- public static void c(int n) {
- try {
- ClassA.a(n);
- } catch (Exception e) {
- System.out.println(e.getMessage()+e.getStackTrace());
- }
- }
- }
- class ClassB {
-
- //创建方法b()并抛出异常,该方法中定义一个打印数组长度为3的int型数组并打印器指定角标的值,可能会出现角标越界异常
- public static void b(int n) throws Exception {
- int[] arr = new int[3];
- if(n>2){
- throw new ArrayIndexOutOfBoundsException("角标越界异常 n="+n);
- }
- System.out.println(arr[n]);
- }
- }
- class ClassA {
-
- //定义一个方法a()并调用ClassB中的方法b()并抛出异常
- public static void a(int n) throws Exception {
- ClassB.b(n);
- }
- }
复制代码 |