黑马程序员技术交流社区

标题: 什么时候try 什么时候throws? [打印本页]

作者: love$$-IT    时间: 2015-2-6 18:40
标题: 什么时候try 什么时候throws?
求解:异常什么时候try 什么时候throws
作者: lwj123    时间: 2015-2-6 18:51
看情况,比如说重写的父类方法是没有的异常子类复写的方法就不能抛出异常或者不能抛出比父类更大范围的异常
作者: Piaget    时间: 2015-2-6 21:11
楼主的意思是什么时候要用到try?
一般情况下,对有可能发生的异常我们都用try{}
作者: Piaget    时间: 2015-2-6 21:19
都用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. }
复制代码

作者: duxubo    时间: 2015-2-7 21:27
一般来说 编译期异常 必须处理 否者编译不过
作者: love$$-IT    时间: 2015-2-7 22:17
Piaget 发表于 2015-2-6 21:19
都用try{    }语句尝试抛出,并用catch(异常类型){    处理方式   }   来进行处理。throw  是在try{    }语 ...

是不是,编译不能通过的,用throw和throws抛,而编译能通过的,就用try处理?
作者: Piaget    时间: 2015-2-7 22:26
love$$-IT 发表于 2015-2-7 22:17
是不是,编译不能通过的,用throw和throws抛,而编译能通过的,就用try处理? ...

异常处理小结
http://bbs.itheima.com/thread-169551-1-1.html
(出处: 黑马程序员IT技术论坛)
编译不能通过的是错误,异常是程序运行期间产生的不可避免的问题。
作者: yueLife_1993    时间: 2015-2-7 22:29
我也来看看 学习学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2