黑马程序员技术交流社区
标题:
RuntimeException异常处理的问题
[打印本页]
作者:
吴通
时间:
2012-8-22 20:17
标题:
RuntimeException异常处理的问题
class NoValueException extends Exception//改为RuntimeException
{
NoValueException(String message)
{
super(message);
}
}
interface Shape
{
void getArea();
}
class Rec implements Shape
{
private int len,wid;
Rec(int len,int wid)throws NoValueException //当前面变为RuntimeException后,这个就不用标示
{
if(len<=0||wid<=0)
throw new NoValueException("出现非法值");
this.len=len;
this.wid=wid;
}
public void getArea()
{
System.out.println(len*wid);
}
}
1. 当程序出现问题处理完之后下面这些执行就没有意义,
所以自定义异常类要继承RuntimeException
为什么Runtime能停止下面的运行?
能详细讲解一下这个功能吗?
2. Rec(int len,int wid)throws NoValueException 这里如果不自定义异常,那么直接抛出RuntimeException("异常")也行?那为什么要自定义呢?
作者:
刘芮铭
时间:
2012-8-22 22:34
针对你上述的问题,我们可以这样看:
1.首先看看RuntimeException这个异常所本身的单词意思:
就是运行时期的异常;代表你本身代码的错误,一定是程序员自己的错误!
比如:ArrayIndexOutOfBoundsException,数组下标越界,这个属于代码有问题,数组定义的长度不够实际使用,不处理肯定会报错。
一旦出现RuntimeException这个异常,就必须处理,没有例外的,捕获异常后,调用System.exit。
而且,处理RuntimeException,不是try-catch能解决的。。try-catch在这里使用毫无意义。
2.继承了RuntimeException后,
方法上不用抛出异常!
作者:
广驰
时间:
2012-8-23 00:14
本帖最后由 应广驰 于 2012-8-23 00:41 编辑
1.RuntimeException是在运行过程中才出现的异常,所以基本上是代表你的代码是有BUG的,必须要停下来进行代码的修改,不然后面的代码执行是无意义的。(
PS:根据面向对象的思想来说,RuntimeException被封装了起来,我们只需要知道如果代码有错误会通过RuntimeException停下来,至于是如何让他停下来的,我们不需要知道,如果你真的想知道就去找RuntimeException的代码吧
)
2.自定义异常继承了RuntimeException具备RuntimeException的功能,但是如果直接丢出来一个RuntimeException异常,你可能不知道到底是什么原因引起的,而自定义异常一般在定义起名称的时候会在把类名定义的更直观,什么异常就直接可以通过类名就能认出来,便于找到错误代码以便进行修改,而且自定义类中可以在类中定义该类特有的内容,可以让异常信息跟详细。
作者:
吴通
时间:
2012-8-23 20:15
谢谢 问题已解决
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2