Java中的throws和throw。。该怎么用。。。他们到底有什么关系。。。

如题所述

这两者虽然看起来只有一个s的区别,但是作用完全不一样
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("程序发生了其他的异常");
//输出提示信息
}
}
}追问

我主要不理解为什么要声明异常才能抛出异常。。。。为什么不能直接抛出异常。。。实在搞不懂声明异常。。

追答

异常通俗来说就是可以挽回的错误或失误,比如你想让对方输入一个整数,用来计算,结果对方输入一个!号,这就属于一个错误,但这个错误是可以进行挽回的,比如你可以提示一个信息给用户,告诉他你的输入有误,让他重新输入

追问

是不是说throws是告诉程序员这个地方可能会出现什么样的异常。。

追答

throws 只是告诉程序这个方法可能会抛出这些个异常,方法的调用者可能要处理这些异常

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-12
throws 是把异常抛给调用自己的类

throw 是抛出异常信息

两个差不多 都是抛出异常

不过一个是产生 一个是传递本回答被网友采纳
第2个回答  2012-09-13
楼上回答 简单明了 谢谢
相似回答