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

来源:1-7 Java 中的异常链

滴滴滴滴滴

2017-07-26 17:42

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回答

  • 慕盖茨7528959
    2017-07-27 13:24:20
    已采纳

    不好意思“调用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方法。

    滴滴滴滴滴

    嗯,我也小白,打算自学。 我说的那个e.print方法,打印一异常位置。 就是你说的这种样子。我是延续上一个教学视频想自己写出完整的方法。

    2017-07-27 22:09:37

    共 2 条回复 >

  • 慕盖茨7528959
    2017-07-27 10:17:53

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

    public static void main(String[] args) {

        try {

            Merry.divide(10, 0);

        }catch(Exception e) {

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

    }

    }

    应该就可以了。

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


    滴滴滴滴滴

    加一个调用e.的方法。 我本来是想写一个带参数的方法,方法中包含异常处理方法,再main入口直接调用,可是现在这样的话,方法中的异常处理就没有用了呀。

    2017-07-27 11:10:18

    共 3 条回复 >

  • _泥人_
    2017-07-26 18:57:54
    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));
    	}


  • qq_makesprefect_0
    2017-07-26 17:57:14

    Unhandled exception type Exception

    滴滴滴滴滴

    什么意思呢?我想知道是哪里出问题了。

    2017-07-26 18:21:15

    共 1 条回复 >

  • 滴滴滴滴滴
    2017-07-26 17:49:58

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

Java入门第三季

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

409769 学习 · 4543 问题

查看课程

相似问题