黑马程序员技术交流社区
标题:
关于Exception或者RuntimeException的问题
[打印本页]
作者:
杨彪
时间:
2012-8-9 19:07
标题:
关于Exception或者RuntimeException的问题
class MyException extends Exception
{
private int num;
MyException(){}
MyException(String message)
{
super(message);
}
MyException(String message,int num)
{
super(message);
this.num = num;
}
public int getNum()
{
return num;
}
}
class MathDemo
{
public int divide(int a,int b)
throws
MyException
{
if(b<0)
{
throw
new MyException("除数不能为负数",b);
}
else
{
return a/b;
}
}
}
class ExceptionDemo8
{
public static void main(String[] args) //throws MyException
{
MathDemo md = new MathDemo();
try
{
System.out.println(md.divide(10,-2));
}
catch(MyException me)
{
System.out.println("你提供的除数是"+me.getNum()+",而我们要求"+me.getMessage());
}
}
}
红色标记的为什么那么用为什么不调过来用呢 throw 和 throws
作者:
方志亮
时间:
2012-8-9 19:07
A:有throws的时候可以没有throw。
有throw的时候,如果throw抛的异常是Exception体系,那么必须有throws在方法上声明。
B:throws用于方法的声明上,其后跟的是异常类名
throw用于方法体中,其后跟的是异常对象名
作者:
叶久瑞
时间:
2012-8-9 19:11
之前我也在这迷过,不过现在明白了,就是throw跟throws的区别问题,我总结的一点知识,你看一下:
————————————————————————————————————————————————————
仔细一看你就明白怎么用了:
public Test() throws RepletException {
try {
System.out.println("Test this Project!")
}
catch (Exception e) {
throw new Exception(e.toString());
}
}
throws是用来声明一个方法可能抛出的所有异常信息
throw则是指抛出的一个具体的异常类型。
通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。
throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;
throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛
作者:
王健
时间:
2012-8-9 19:30
本帖最后由 王健 于 2012-8-9 19:33 编辑
Exception和RuntimeException的区别
A:Exception:一般性的错误,是需要我们编写代码进行处理的。
B:RuntimeException:运行时异常,这个我们也不需要处理。
其实就是为了让他在运行时出问题,然后我们回来修改代码。
在用throws抛出一个的时候,如果这个异常是属于RuntimeException的体系的时候,
我们在调用的地方可以不用处理。(RuntimeException和RuntimeException的子类)
在用throws抛出一个的时候,如果这个异常是属于Exception的体系的时候,
我们在调用的地方必须进行处理或者继续抛出。
throws和throw的区别
A:有throws的时候可以没有throw。
有throw的时候,如果throw抛的异常是Exception体系,那么必须有throws在方法上声明。
B:throws用于方法的声明上,其后跟的是异常类名
throw用于方法体中,其后跟的是异常对象名
作者:
杨锦
时间:
2012-8-9 19:35
public int divide(int a,int b) throws MyException
{
if(b<0)
{
throw new MyException("除数不能为负数",b);
//throw 是用来抛出一个异常,这里是将你自己定义的一个异常抛出
}
// 异常抛出后,你必须将它声明出去,就用到了throws,声明在方法
上 else
{
return a/b;
}
}
作者:
戎石锁
时间:
2012-8-9 19:48
对于Exception分为两种:
1.编译时被检测的异常。(也即这些异常必须在catch块中进行处理,否则编译报错。)
2.编译时不被检测的异常(运行时异常,RuntimeException以及其子类)
RuntimeException(运行时异常)是Exception的一个特殊的子类异常
1.若函数内throw了RuntimeException及其子类的异常,那么函数上不用throws声明。
2.如果在函数上声明了该异常,调用者可以不用进行处理。
之所以不用在函数上声明,是因为不需要让调用者处理。
当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修正。
自定义异常时,如果该异常的发生,无法再继续进行运算,就让自定义异常继承RuntimeException。
作者:
张振纲
时间:
2012-8-9 20:36
throws是用来声明异常,只能定义在函数上
throw是用来抛出异常,是用在函数内部
作者:
郑彬
时间:
2012-8-9 20:59
throws用于声明异常,跟在函数的小括号后面,大括号前面,后面跟的是异常类,可以跟多个,用逗号隔开。
throw用于抛出异常对象,作用于函数内,throw后面跟着是异常对象。
throws Exception//通过throws的关键字声明了该功能有可能会出现问题。(抛出可能出现的问题)
可以手动通过throw(与throws的区别,throws抛的是异常类,throw抛异常对象)关键字抛出一个自定义异常对象。
当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作。
要么在内部try catch处理。
要么在函数上声明让调用者处理。一般情况,在函数内出现异常,函数上都需要声明。除RuntimeException及其子类除外。
作者:
曹晓涵
时间:
2012-8-9 21:25
throws和throw的区别:
throws使用在函数上;throw使用在函数内。
throws后面跟的是异常类,可以跟多个,用逗号隔开;throw后面跟的是异常对象。
这是规定,所以不能调换。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2