java什么情况下必须用throws抛出异常
如下面的代码去掉throwsMyException就不能编译,可main里的try块已考虑到MyException导常了,它应该能处理这种异常吧,这段代码怎么改能不用th...
如下面的代码去掉throws MyException就不能编译,可main里的try块已考虑到MyException导常了,它应该能处理这种异常吧,这段代码怎么改能不用throws什么情况下必须用throws抛出异常?
=================================================================
class MyException extends Exception {
private int detail;
MyException(int a) {
detail = a;
}
public String toString() {
return "MyException[" + detail + "]";
}
}
class ExceptionDemo {
static void compute(int a) throws MyException{
System.out.println("Called compute(" + a + ")");
if(a > 10)
throw new MyException(a);
System.out.println("Normal exit");
}
public static void main(String args[]) {
try {
compute(1);
compute(20);
} catch (MyException e) {
System.out.println("Caught " + e);
}
}
}
throw new MyException(a); 不算抛了异常吗? a>10时throw抛出异常
改成这样:
class ExceptionDemo {
static void compute(int a){
try{
System.out.println("Called compute(" + a + ")");
if(a > 10)
throw new MyException(a);
System.out.println("Normal exit");
}catch(MyException e){
System.out.println("不抛出自己处理!"+e);
}
}
编译错误:在相应的 try 语句主体中不能抛出异常 MyException 展开
=================================================================
class MyException extends Exception {
private int detail;
MyException(int a) {
detail = a;
}
public String toString() {
return "MyException[" + detail + "]";
}
}
class ExceptionDemo {
static void compute(int a) throws MyException{
System.out.println("Called compute(" + a + ")");
if(a > 10)
throw new MyException(a);
System.out.println("Normal exit");
}
public static void main(String args[]) {
try {
compute(1);
compute(20);
} catch (MyException e) {
System.out.println("Caught " + e);
}
}
}
throw new MyException(a); 不算抛了异常吗? a>10时throw抛出异常
改成这样:
class ExceptionDemo {
static void compute(int a){
try{
System.out.println("Called compute(" + a + ")");
if(a > 10)
throw new MyException(a);
System.out.println("Normal exit");
}catch(MyException e){
System.out.println("不抛出自己处理!"+e);
}
}
编译错误:在相应的 try 语句主体中不能抛出异常 MyException 展开
4个回答
展开全部
你是说compute(int a)里面的throws Exception吧
因为在compute(int a)里面你用throw MyException抛出异常
这样的话要么你在方法内部用try块自己处理这个异常,要么就让方法抛出这个异常,让调用这个方法的方法去处理这个异常
你说你删除throws就错了,是因为你既然没有抛出异常,那么就应该自己处理,你没有自己处理,所以就错了
因为在compute(int a)里面你用throw MyException抛出异常
这样的话要么你在方法内部用try块自己处理这个异常,要么就让方法抛出这个异常,让调用这个方法的方法去处理这个异常
你说你删除throws就错了,是因为你既然没有抛出异常,那么就应该自己处理,你没有自己处理,所以就错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义类中方法抛弃异常时就必须捕获或是抛出让下一个捕获。而main是调用了该类的该方法,是处理异常,而去掉方法中的throws,没有抛出异常,main如何处理?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般是用于另起一个异常块。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询