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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© love$$-IT 中级黑马   /  2015-2-6 18:40  /  1226 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求解:异常什么时候try 什么时候throws

7 个回复

正序浏览
我也来看看 学习学习
回复 使用道具 举报
love$$-IT 发表于 2015-2-7 22:17
是不是,编译不能通过的,用throw和throws抛,而编译能通过的,就用try处理? ...

异常处理小结
http://bbs.itheima.com/thread-169551-1-1.html
(出处: 黑马程序员IT技术论坛)
编译不能通过的是错误,异常是程序运行期间产生的不可避免的问题。
回复 使用道具 举报
Piaget 发表于 2015-2-6 21:19
都用try{    }语句尝试抛出,并用catch(异常类型){    处理方式   }   来进行处理。throw  是在try{    }语 ...

是不是,编译不能通过的,用throw和throws抛,而编译能通过的,就用try处理?
回复 使用道具 举报
一般来说 编译期异常 必须处理 否者编译不过
回复 使用道具 举报
都用try{    }语句尝试抛出,并用catch(异常类型){    处理方式   }   来进行处理。throw  是在try{    }语句中通过java虚拟机自动创建对象并抛出,通过catch(异常类型)来接收。
   throws是在方法外部抛出的,是此方法不能处理的异常。或者没有catch语句。
  1. public class TestC
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 A a1 = new A();
  6.                 try
  7.                 {
  8.                         a1.a(4);
  9.                 } catch (NullPointerException e)
  10.                 {
  11.                        
  12.                         e.printStackTrace();
  13.                 }
  14.                                
  15.         }
  16. }
  17. class A
  18. {
  19.         public void a(int a) throws ArrayIndexOutOfBoundsException
  20.         {
  21.                 B b1= new B();
  22.                 try
  23.                 {
  24.                         b1.b(a);                       
  25.                 } catch (ArrayIndexOutOfBoundsException e)
  26.                 {
  27.                         throw e;
  28.                 }
  29.         }
  30. }
  31. class B
  32. {

  33.         public void b(int a) throws ArrayIndexOutOfBoundsException
  34.         {
  35.                 int [] arr={1,2,3};
  36.                 try
  37.                 {
  38.                         System.out.println(arr[a]);
  39.                        
  40.                 } catch (ArrayIndexOutOfBoundsException e)
  41.                 {
  42.                         // TODO: handle exception
  43.                         throw e;
  44.                 }
  45.         }
  46.        
  47. }
复制代码
回复 使用道具 举报
楼主的意思是什么时候要用到try?
一般情况下,对有可能发生的异常我们都用try{}
回复 使用道具 举报
看情况,比如说重写的父类方法是没有的异常子类复写的方法就不能抛出异常或者不能抛出比父类更大范围的异常
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马