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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢威 中级黑马   /  2013-3-22 22:33  /  3626 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谢威 于 2013-3-23 07:35 编辑

请问Throw、Throws和Throwable之间的区别是什么,举例说明。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

4 个回复

正序浏览
本帖最后由 wangchao1686 于 2013-6-13 11:59 编辑

throw和throws的区别
区别1:
       throw 是语句抛出一个异常对象;
       throws 定义在方法上,是方法上抛出异常类,把异常抛给这个函数的调用者。
区别2:
      throw真能抛出一个异常对象。
      thorws可以抛出多个异常类,多个异常类之间用逗号隔开。

      Throwable类是所有异常和错误的超类,有两个子类两个子类Error和exception,分别表示错误和异常。 在java中任何异常(广义)都是继承自Throwable的。
回复 使用道具 举报
本帖最后由 侯国奇 于 2013-3-22 22:59 编辑

Throwable是异常体系的统称,其中的所有类以及建立的对象都具备可抛性。也就是说可以被throw和throws关键字所操作,并且只有异常体系具备这个特点。
而throw和throws的区别之处在于:
throw定义在函数内,用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。
PS:throw语句单独存在时后面不能再跟语句,因为执行不到;和return/break/continue一样。
举例就不必了吧,视频里多得是~
回复 使用道具 举报
Throw定义在函数内,用于抛出异常对象。
如:
class Circle implement Shape
{
     private int radius;
     public static final PI=3.14;
     Circle(int radius)
     {
           if(radius<=0)
            throw new NoValueException("非法");
           this.radius=radius;
     }
}
...

Throws定义在函数上,用于抛出异常类,可抛出多个,用逗号隔开。
如:
public class Shoot
{   
    static void pop() throws NegativeArraySizeException
         {
              int [] arr = new int[-3];
          }
         public static void main(String[] args)
          {
               try
               {
                          pop();
               }
                catch (NegativeArraySizeException e)
                {
                      System.out.println("pop()方法抛出的异常");
                }
         }
}

Throwable是异常体系,其中包括Error,Exception。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
异常:
是对问题的描述。将问题进行对象的封装。
异常体系:
Throwable
    ∨
    Error
    ∨
    Exception

RuntimeException
特点:异常体系中的所有类 以及建立的对象都具备可抛性。
     也就是说可以被throw和throws关键字所操作。只有异常体系具备这个特点。
throw和throws的用法:
throw定义在函数内,用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号可开。

原则:
1、处理方式:try或者throws。
2、调用到抛出异常的功能时,抛出几个,就处理几个。
一个try对应多个catch
3、多个catch,父类的catch放到最下面。
4、catch内需要定义针对性的处理方式,不要简单的定义printStackTrace,输出语句。
也不要不写。当捕获到的异常,本功能处理不了时,可以继续在catch中抛出。
eg:
  1. try{
  2. throw new AException();
  3. }catch(AException e){
  4. throw e;
  5. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

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