A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 男人你得有范 中级黑马   /  2014-8-24 19:39  /  1283 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package com.itheima;

  2. /**
  3. * 第8题:有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个方法a,请在这个方法中调用b
  4. * ,然后抛出异常。在客户端有一个类为TestC,有一个方法为c ,请在这个方法中捕捉异常的信息。完成这个例子,请说出java中针对异常的处理机制。
  5. *
  6. * @author hp-pc
  7. * */

  8. /*
  9. * java针对异常处理的机制:
  10. *
  11. * java中的异常处理机制主要依赖于try,catch,finally,throw和throws五个关键字。
  12. * 其中try关键字后边紧跟的用花括号括起来的代码块叫try代码块,里面放置可能发生异常的代码。
  13. * catch后对应异常类型和一个代码块,用于表明该catch块是用于处理这种异常类型的代码块。
  14. * 多个catch块后边还可以跟一个finally块,finally块用于回收在try块里打开的物理资源,
  15. * 异常机制保证finally块总会被执行。
  16. *
  17. * throws关键字主要在方法签名中使用,用于该方法可能抛出的异常
  18. * throw用于抛出一个实际的异常,throw可以单独作为语句使用,抛出一个具体的异常对象
  19. *
  20. * java异常分为两种:
  21. * Checked异常和Runtime异常
  22. * java认为Checked异常都是在编译阶段可以被处理的异常,所以它强制处理所有的Checked异常。
  23. * 而Runtime异常则无需处理
  24. * */
  25. class ClassA
  26. {
  27.         // 抛出异常,这就是说有问题了,A把问题扔给调用者
  28.         public static void a() throws Exception
  29.         {
  30.                 ClassB.b();
  31.         }
  32. }

  33. class ClassB
  34. {
  35.         public static void b() throws Exception
  36.         {
  37.                 //在方法内部抛出异常
  38.                 throw new Exception("throw by ClassB.b()");
  39.         }
  40. }

  41. class TestC
  42. {
  43.         public static void c()
  44.         {
  45.                 try
  46.                 {
  47.                         ClassA.a();
  48.                 }
  49.                 catch (Exception e)//捕获异常
  50.                 {
  51.                         //e.printStackTrace();
  52.                         //打印异常信息
  53.                         //捕获的异常信息:java.lang.Exception: throw by ClassB.b()
  54.                         System.out.println(e.toString());
  55.                 }
  56.         }
  57. }

  58. public class Test8
  59. {
  60.         public static void main(String[] args)
  61.         {
  62.                 TestC.c();
  63.         }
  64. }
复制代码

1 个回复

倒序浏览
有时我们可以利用异常控制流程的走向,比如传递的参数为空,我也可以抛出异常,告诉调用,空的可以不行哦!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马