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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 苏格拉底的弟子 于 2012-1-7 22:42 编辑

这个函数内部throw,,抛不抛不都一样吗?  反正编译时都可以通过,都在运行时在报错的,,,,    而throws 特点在于编译都不会通过.这就有区别于不抛了。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

5 个回复

倒序浏览
有时候有些错误在jvm看来不是错误,比如说
int age = 0;
age = -100;
System.out.println(age);
很正常的整形变量赋值,但是在我们眼中看来就不正常,谁的年龄会是负的呢。
所以我们需要自己手动引发异常,这就是throw的作用
int age = 0;
age = -100;
if(age<0)
{
Exception e = new Exception();//创建异常对象
throw e;//抛出异常
}
System.out.println(age);

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
throw 用来抛出异常
throws 用来标识可能抛出的异常
public class Person {
public void display() throws Exception{
System.out.println("hello everyone");
}
}
public class Test {
public static void main(String[]args){
Person person = new Person();
//在Person中的display方法抛出了异常,在调用display方法是需要捕捉
try {
person.display();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//在调用方法时,如果有用到用throws标识了异常的方法,程序最终被运行之前必须要被捕捉

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
还有什么容易理解的说法吗
回复 使用道具 举报
抛出异常可以给人家提示出信息,人家可以知道哪错了.
一切用户至上

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
哈哈  原来这样啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马