黑马程序员技术交流社区

标题: 关于异常处理问题 [打印本页]

作者: 2012    时间: 2013-9-8 13:20
标题: 关于异常处理问题
关于异常,要么try,要么抛。但什么时候try,什么时候抛,在方法上抛还是方法内抛,具体又怎么抛,抛什么。RuntimeException与普通异常有何区别,如何用好throw和throws
希望用例说明,并全面总结一下,谢谢!

作者: hmwudizl91zl    时间: 2013-9-8 17:22
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可以单独使用,然后再由处理异常的方法捕获。
嘿嘿。个人粗俗的见解,学生一枚。。说错了勿喷。。
作者: 杨增坤    时间: 2013-9-8 17:59



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

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

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

希望对你有帮助,如果你还是不太明白,请参考:这里

作者: 落叶归根    时间: 2013-9-8 18:51
哥们儿这里面是老师们上课所写的笔记,你自己来看吧。http://bbs.itheima.com/thread-57804-1-1.html
作者: mf152    时间: 2013-9-10 00:57
异常处理流程
try{
语句1
}catch{
  语句2
} finally{
   语句3
}
语句4
在cry 语句1中发生异常会直接跳入catch(语句2)并抛出异常
finally是一定要走的(语句3)
异常处理后(加try catch) 语句4正常执行,若没有做异常处理,语句4便不执行

作者: 杨增坤    时间: 2013-9-10 09:05
楼主,您好!
如果您的问题解决了,请把您问题的未解决更改为已解决
谢谢合作!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2