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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 2012 中级黑马   /  2013-9-8 13:20  /  1283 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于异常,要么try,要么抛。但什么时候try,什么时候抛,在方法上抛还是方法内抛,具体又怎么抛,抛什么。RuntimeException与普通异常有何区别,如何用好throw和throws
希望用例说明,并全面总结一下,谢谢!

5 个回复

倒序浏览
RuntimeException就是运行时异常,它是java编译器事先不可预见的异常,而其他的异常大致的说是检查时异常,就是说帮你检查出来了可能出现的异常。此时你程序未执行,但是有可能抛出这个异常,所以提醒你记得捕获。。说个更通俗的,你代码里出现过catch(IOException).也出现过SQLExec也出现过SQLException.....但是貌似没有出现过catch(RuntimeException)吧。。
throw 和 throws的区别
区别一:throw 是语句抛出一个异常;throws 是方法抛出一个异常;throw语法:throw <异常对象>在方法声明中,添加throws子句表示该方法将抛出异常。
throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>],其中:异常类可以声明多个,用逗号分割。
区别二:throws可以单独使用,但throw不能;
区别三:throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单独使用,然后再由处理异常的方法捕获。
嘿嘿。个人粗俗的见解,学生一枚。。说错了勿喷。。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报



要么try{}要么抛:
             就是是会所try{}就是对代码进行检测,然后用catch()进行捕获并匹配,进行处理,抛就是:你在本方法中进行处理,抛出异常对象,交给调用这进行处理或者继续抛出

在方法上抛还是方法内抛的问题怎么跑,抛什么:
                如果你抛出的是Exception的异常对象话(格式:throw  异常对象),那吗在本方法的声明上要声明(格式:权限 返回值 方法名(参数) throws 异常类)   
                如果你抛出的是RunntimeException的对象,那么你就直接抛出就可可以,不需要在方法上声明

RuntimeException和Exception的区别:
           RuntimeExcetion是运行时异常,就是如果出现了问题,那么就必须停止程序,有操作者进行处理和修改。如果抛出的是其对象或者是子类的对象,那么不需要在方法上声明,也能编译通过。同理要是在方法上声明了抛出的是此类或者其子类,那么在调用也可以不用进行捕获或者不处理,或者不抛出
         Exception不管是抛出或者是声明,那那么必须进行相应的操作,要么try要么抛
throw和throws的区别:
        throw:后面跟的是异常对象,是用来抛出异常对象,后面跟一个异常对象,在方法中使用
         throws:后面跟的是异常类,可以跟多个,是在方法上使用

希望对你有帮助,如果你还是不太明白,请参考:这里
回复 使用道具 举报
哥们儿这里面是老师们上课所写的笔记,你自己来看吧。http://bbs.itheima.com/thread-57804-1-1.html

评分

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

查看全部评分

回复 使用道具 举报
异常处理流程
try{
语句1
}catch{
  语句2
} finally{
   语句3
}
语句4
在cry 语句1中发生异常会直接跳入catch(语句2)并抛出异常
finally是一定要走的(语句3)
异常处理后(加try catch) 语句4正常执行,若没有做异常处理,语句4便不执行
回复 使用道具 举报
楼主,您好!
如果您的问题解决了,请把您问题的未解决更改为已解决
谢谢合作!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马