黑马程序员技术交流社区
标题:
Exception和RuntimeException的问题?
[打印本页]
作者:
李平
时间:
2012-4-14 20:29
标题:
Exception和RuntimeException的问题?
老师举得一个例子
/*
有一个圆形和长方形
都可以获取面积,对于面积出现非法的数值,视为获取面积出现问题。
问题用异常表示。
设计此程序。
*/
interface Shape
{
public void getArea();
}
class NoValueException extends RuntimeException//Exception
{
NoValueException(String msg)
{
super(msg);
}
}
class Rec implements Shape
{
private int len,wid;
Rec(int len,int wid)//throws NoValueException
{
if(len<=0 || wid<=0)
throw new NoValueException("出现非法值");
this.len = len;
this.wid = wid;
}
public void getArea()
{
System.out.println(len*wid);
}
}
class AreaFY
{
public static void main(String[] args)
{
//try
//{
Rec r = new Rec(-4,2);
r.getArea();
//}
//catch (NoValueException e)
//{
// System.out.println(e.toString());
//}
System.out.println("over");
}
}
双斜杠后面为继承Exception的程序。
为什么继承RuntimeException时就不需要try catch了呢??
作者:
尹博
时间:
2012-4-14 20:33
抛出RuntimeException异常的目的就是为了让程序停掉,这时需要修改代码,因此不需要进行处理,也不需要在函数上声明。
作者:
邓斌
时间:
2012-4-14 20:34
Exception 中有一个特殊的子类异常。RuntimeException运行时异常
如果在函数内抛出该异常,函数上可以不用声明,编译一样通过。
如果在函数上声明了该异常,调用者可以不用处理。编译一样通过
之所以不用再函数声明,是因为不需要让调用者处理。
当该异常发生,希望程序停止。因为在运行时,出现了无法继续,
希望停止程序后,对代码进行修正。
对于异常分两种:
1。编译时被检测的异常。
2。编译时不被检测的异常(运行时的异常RuntimeException)
作者:
邓斌
时间:
2012-4-14 20:37
把我上面的看一下。我在简单说一下。就能理解了
函数上没有声明所以不用try{}catch{}
你在函数内声明。调用着不用处理。编译一样通过。程序停止。出现异常。就是你自定义的异常。
作者:
马强
时间:
2012-4-14 20:52
RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类,就是顶
他有很多子类,处理各种各样的运行时跳出的异常。不用try因为不需要让调用者处理,毕老师有几个例子很形象
try是因为为了错误不影响其他的运作,而runtime,这出错了下面也没有意义了。
作者:
李平
时间:
2012-4-14 20:53
RuntimeException当出现问题需要终止程序时用,不需要用户处理,所有不需要main函数中try catch,这样理解对吧?
非常感谢,谢了。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2