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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈小红 中级黑马   /  2012-11-3 00:26  /  2334 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

throw和throws都叫做抛出异常吗?

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1 神马都是浮云

查看全部评分

9 个回复

倒序浏览
一个是方法 一个是类
回复 使用道具 举报
throw 抛出的是对象
throws抛出的是类

throws用在方法头
throw用在方法内

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1

查看全部评分

回复 使用道具 举报
public static void main()throws IOException {
}

try{

}catch(){
throw new IOEception...


throw 抛出的是对象
throws则抛出的是类

throws用在方法头
throw用在方法内
我是这样理解的..不知道对不对了..

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 吴愿涛 于 2012-11-6 13:48 编辑

1、throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。如下面例子所示:
public class Shoot {   创建类
static void pop() throws NegativeArraySizeException {
//定义方法并抛出NegativeArraySizeException异常
int [] arr = new int[-3];//创建数组
}
public static void main(String[] args) {//主方法
try {
pop(); //调用pop()方法
} catch (NegativeArraySizeException e) {
System.out.println("pop()方法抛出的异常");//输出异常信息
}
}
}

2、throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。举例如下:
class MyException extends Exception { //创建自定义异常类
String message; //定义String类型变量
public MyException(String ErrorMessagr) {  //父类方法
       message = ErrorMessagr;
}
public String getMessage(){   //覆盖getMessage()方法
  return message;
}
}
public class Captor { //创建类
static int quotient(int x,int y) throws MyException{//定义方法抛出异常
if(y < 0){  //判断参数是否小于0
         throw new MyException("除数不能是负数");//异常信息
}
return x/y;//返回值
}
public static void main(String args[]){ //主方法
try{ //try语句包含可能发生异常的语句
                int result = quotient(3,-1);//调用方法quotient()
    }catch (MyException e) { //处理自定义异常
  System.out.println(e.getMessage()); //输出异常信息
  }
    catch (ArithmeticException e) {
                   //处理ArithmeticException异常
  System.out.println("除数不能为0");//输出提示信息
  }
   catch (Exception e) { //处理其他异常
  System.out.println("程序发生了其他的异常");
                  //输出提示信息
  }
}
}

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1

查看全部评分

回复 使用道具 举报
throw用于抛出异常对象,后面跟的是异常对象;throw用在函数内。
throws用于抛出异常类,后面跟的异常类名,可以跟多个,用逗号隔开。throws用在函数上。
回复 使用道具 举报
hrow 和throws关键字的区别:
throw用于抛出异常对象,后面跟的是异常对象;throw用在函数内。
throws用于抛出异常类,后面跟的异常类名,可以跟多个,用逗号隔开。throws用在函数上。

通常情况:函数内容如果有throw,抛出异常对象,并没有进行处理,那么函数上一定要声明,否则编译失败。但是也有特殊情况。

异常分两种:
 1:编译时被检查的异常,只要是Exception及其子类都是编译时被检测的异常。
 2:运行时异常,其中Exception有一个特殊的子类RuntimeException,以及RuntimeException的子类是运行异常,也就说这个异常是编译时不被检查的异常。

编译时被检查的异常和运行时异常的区别:
 编译被检查的异常在函数内被抛出,函数必须要声明,否编译失败。
 声明的原因:是需要调用者对该异常进行处理。
 运行时异常如果在函数内被抛出,在函数上不需要声明。
 不声明的原因:不需要调用者处理,运行时异常发生,已经无法再让程序继续运行,所以,不让调用处理的,直接让程序停止,由调用者对代码进行修正。

定义异常处理时,什么时候定义try,什么时候定义throws呢?
  功能内部如果出现异常,如果内部可以处理,就用try;
  如果功能内部处理不了,就必须声明出来,让调用者处理。

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1

查看全部评分

回复 使用道具 举报
jsfjb 中级黑马 2012-11-3 14:06:40
8#
看完后,我感觉:太牛了。继续加油。
回复 使用道具 举报
使用throws声明的方法表示此方法不处理异常,而是交给方法的调用处进行处理,与throws关键字不同的是,throw关键字可以人为的抛出一个异常,抛出时直接抛出异常类的实例化对象即可。一般throw不会单独使用,实际上,在开发中,像try...catch...finally,throw,throws联合使用的比较多。
回复 使用道具 举报
throws表示声明抛出的异常,比如throws IOException,一般用在函数参数列表之后
throw表示要抛出异常对象 ,比如throw new RuntimeException("错拉"); 用在函数的内部
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马