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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李涛兴 中级黑马   /  2012-11-16 22:16  /  1572 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李涛兴 于 2012-11-16 23:01 编辑
  1. class Ticket implements Runnable
  2. {
  3.         private int tick=100;
  4.         Object obj=new Object();
  5.         public  void run()
  6.         {
  7.                 while(true)
  8.                 {
  9.                         synchronized(obj)
  10.                         {
  11.                                 if(tick>0)
  12.                                 {
  13.                                         try        
  14.                                         {
  15.                                                 Thread.sleep(10);
  16.                                         }
  17.                                         catch(Exception e)
  18.                                         {
  19.                                         }
  20.                                         System.out.println(Thread.currentThread().getName()+".."+tick--);
  21.                                 }
  22.                         }
  23.                 }
  24.         }
  25. }
  26. class  TicketDemo
  27. {
  28.         public static void main(String[] args)
  29.         {
  30.                 Ticket t=new Ticket();
  31.                 //t.run();
  32.                 Thread t1=new Thread(t);
  33.                 Thread t2=new Thread(t);
  34.                 Thread t3=new Thread(t);
  35.                 Thread t4=new Thread(t);
  36.                 t1.start();
  37.                 t2.start();
  38.                 t3.start();
  39.                 t4.start();

  40.         
  41.         }
  42. }
复制代码
请问线程为什么使用异常try{},catch{}的时候,而不用使该类去继承Exception或者RuntimeException呢?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
本帖最后由 张利 于 2012-11-16 22:43 编辑

继承异常应该是在想要编写一个异常类的时候才会去继承
异常分为 Error 和Exception
     Exception又分为 受检查异常和不受检查异常(RuntimeException)
在这些异常里面,只有受检查异常要求在定义方法中的时候就要处理异常或者声明异常
处理异常就是用 try{}catch{}   
声明异常就是在方法的最后加上throws 异常

你的run()方法中,调用的Thread.sleep()这个方法会抛出InterruptedException异常
这个异常是受检查异常,因此需要try{}catch{}处理或者是在方法定义中声明

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
当需要使用自定义异常时可以创建一个类继承Exception来满足对业务的需求
而在这个类中使用的是系统提供的异常,并且这个类跟自定义异常也没关系,
所以,try{},catch{}是用来处理异常,使该类去继承Exception或者RuntimeException是自定义异常类的前提
回复 使用道具 举报
补充一下,这个问题其实我感觉也就只有异常问题,标题“ 关于多线程和异常问题 ”,问题中两者并无什么关系

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马