为了账号安全,请及时绑定邮箱和手机立即绑定

为什么会报错呢?怎么处理呢?

package qqq;


public class Merry {



public   static void   divide(int a,int b)throws Exception{

if (b==0) {

throw new Exception("除数不能为零");

}

else{System.out.println("两数相除,商为:"+a/b);}

}


public static void main(String[] args) {

// Merry merry=new Merry();

Merry.divide(10, 2);

}


}

然后运行的结果是:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

Unhandled exception type Exception


at qqq.Merry.main(Merry.java:17)

我一直想不明白,求解答。

正在回答

5 回答

不好意思“调用e.方法”能不能详细说说……(我是真的小白

嗯可是我觉得,就目前来看这个divide方法只负责抛出异常,本身没有处理异常的功能。不知道你的想法是不是下面这样:

public void test(int a,int b) {
      try {
           Merry.divide(a, b);
      }catch(Exception e) {
           System.out.println("除数不能为零");
      }
 }
 
 public static void main(String[] args) {
      Merry merry=new Merry();
      merry.test(10, 2);
 }

就是再写一个带参的test方法,这个方法调用divide方法,并且可以解决它抛出的异常,然后main直接调用test方法。

0 回复 有任何疑惑可以回复我~
#1

慕盖茨7528959

啊我是上面那层的,忘记直接点回复了(囧
2017-07-27 回复 有任何疑惑可以回复我~
#2

滴滴滴滴滴 提问者

嗯,我也小白,打算自学。 我说的那个e.print方法,打印一异常位置。 就是你说的这种样子。我是延续上一个教学视频想自己写出完整的方法。
2017-07-27 回复 有任何疑惑可以回复我~

我虽然是小白但是姑且说一下我的想法哈~这个意思应该是说在main里面调用的divide方法可能会抛出异常,但是你没有写抛出了异常之后要如何处理的方法,也就是没有写try-catch,所以如果main写成

public static void main(String[] args) {

    try {

        Merry.divide(10, 0);

    }catch(Exception e) {

        System.out.println("除数不能为零");

}

}

应该就可以了。

不过我还不太清楚Exception(“除数不能为零”)这里面的字符串参数有什么用,望交流指点呀!~


0 回复 有任何疑惑可以回复我~
#1

滴滴滴滴滴 提问者

参数是想如果报错,调用方法。书写出哪一行出错。
2017-07-27 回复 有任何疑惑可以回复我~
#2

慕盖茨7528959 回复 滴滴滴滴滴 提问者

谢谢解答!但是,如果我上面写的代码里面在catch里不写 System.out.println("除数不能为零");的话就没有任何输出信息呀……是我哪里搞错了吗?
2017-07-27 回复 有任何疑惑可以回复我~
#3

滴滴滴滴滴 提问者

加一个调用e.的方法。 我本来是想写一个带参数的方法,方法中包含异常处理方法,再main入口直接调用,可是现在这样的话,方法中的异常处理就没有用了呀。
2017-07-27 回复 有任何疑惑可以回复我~
public static void  ivide(int a,int b)throws Exception{
    if (b==0) {
        throw new Exception("除数不能为零");
    }
    else{
        System.out.println("两数相除,商为:"+a/b);}
        throw new Exception();
    }

public static void main(String[] args) {
    divide(10, 2);
}

b==0 ? 不等于零你是要抛出异常的。  你想要捕获异常,然后输出中文的异常,不是这么搞的。

public static double divide(int a, int b){
		try {
			return a/b;
		} catch (Exception e) {
			if(b == 0){
				System.out.println("除数不能为零!");
			}else{
				e.printStackTrace();
			}
			return 0D;	
		}
	}
	
	public static void main(String[] args) throws Exception {
		
		System.out.println(divide(10, 2));
	}


0 回复 有任何疑惑可以回复我~

Unhandled exception type Exception

0 回复 有任何疑惑可以回复我~
#1

滴滴滴滴滴 提问者

什么意思呢?我想知道是哪里出问题了。
2017-07-26 回复 有任何疑惑可以回复我~

也就时在主方法调用那一行

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409774    人
  • 解答问题       4546    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

为什么会报错呢?怎么处理呢?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号