黑马程序员技术交流社区
标题:
Exception和RuntimeException的问题?
[打印本页]
作者:
李会成
时间:
2013-2-3 19:47
标题:
Exception和RuntimeException的问题?
本帖最后由 李会成 于 2013-2-4 15:17 编辑
/*
有一个圆形和长方形
都可以获取面积,对于面积出现非法的数值,视为获取面积出现问题。
问题用异常表示。
设计此程序。
*/
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了呢??
作者:
李洪因
时间:
2013-2-3 20:14
RuntimeException是Exception的子类,一般来说该异常是程序在运行时抛出这种错误编译是无法捕捉的,如果在程序中不加处理,在程序运行就会产生并上缴给JVM处理。
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。Java编译器要求方法必须声明抛出可能发生的非运行时异常同,但是并不要求必须声明抛出未被捕获的运行时异常。
exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况;Exception表示需要捕捉或者需要程序进行处理的异常。
如果异常是继承RuntimeException,则不需要强制你写try catch语句来保证抛出的异常得到处理。如果继承的是Exception,则一定需要try catch语句保证异常得到处理,或者在该方法中显式声明抛出该异常。
通常如果你的方法显式声明了需要抛出的异常,编译器会提示你需要使用try catch语句来处理这些异常或者声明抛出,否则会有编译错误。对于有些异常是继承RuntimeException的,这些异常是引发unchecked Exception的主要原因,编译器不会提示,但是你也可以使用try catch来捕捉处理。
作者:
李培根
时间:
2013-2-18 11:27
请勿复制他人帖子,技术分不是入学的门槛而是为了帮助大家学习而存在的。
请勿再次发此类帖子了!
此贴就关闭了。此后如有再次发现直接封禁处理,请看到此贴的会员也加以注意。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2