/testOwnerException.java
public class testOwnerException
{
   public static void main(String[] args)
    {
      int x=10;
      try
         {
           System.out.println("result="+divide(x,5));
           System.out.println("result="+divide(x,0));
         }
      catch(ZeroDivideException e)
         {
           System.out.println("found ZeroDivideException!");
         }
      catch(ArithmeticExcepion e)
         {
           System.out.println("found Arithmetic Exception!");
         }     public static int divide(int dividend,int divisor) throws ZeroDivideException
     {
        int result=0;
        try
          {
            result=dividend/divisor;
            return result;
          }
         catch(ArithmeticException e)
          {
            System.out.println("DO NOT excute divide operation");
            throw new ZeroDivideException(divisor+1);
          }
      }
}
麻烦大家帮我看看哪里有问题,谢谢

解决方案 »

  1.   

    public class testOwnerException
    {
       public static void main(String[] args)
        {
          int x=10;
          try
             {
               System.out.println("result="+divide(x,5));
               System.out.println("result="+divide(x,0));
             }
          catch(ZeroDivideException e)
             {
               System.out.println("found ZeroDivideException!");
             }
          catch(ArithmeticExcepion e)
             {
               System.out.println("found Arithmetic Exception!");
             }
    //少了括号
         public static int divide(int dividend,int divisor) throws ZeroDivideException
         {
            int result=0;
            try
              {
                result=dividend/divisor;
                return result;
              }
             catch(ArithmeticException e)
              {
                System.out.println("DO NOT excute divide operation");
                throw new ZeroDivideException(divisor+1);
              }
          }
    }
    ---------------------------------
    这种编译得问题好好找找不就行了
      

  2.   

    对了,这段程序,最后的那段,是自定义方法吧.
    public static int divide(int dividend,int divisor) throws ZeroDivideException
         {
            int result=0;
            try
              {
                result=dividend/divisor;
                return result;
              }
             catch(ArithmeticException e)
              {
                System.out.println("DO NOT excute divide operation");
                throw new ZeroDivideException(divisor+1);
              }
          }
    那放到前面是不是也一样的效果?
    其实是想问,是不是放前放后都没关系,只要编译通过了.然后程序运行的时候就自动会调用这个方法了,哪怕这个方法是写在别的文件里的?
      

  3.   

    那为什么这个方法是写在main方法的后面的
    程序不是从头开始读的么?那main方法都结束了,再读后面的,为什么效果还一样?
      

  4.   

    因为这是Java,不是C,不需要先声明后定义
      

  5.   

    我不会C的,我是初学的,能讲讲么?
    另外public Exception(String s)这个方法具体是什么意思?
    里面的参数的作用是什么?我不理解
    书上没讲明白
      

  6.   

    以你的程度就别搞这么难的了,先写个Hello World,然后慢慢地改成用无参数方法调用的,然后再改成有参数方法调用的看看吧,异常的东西可以以后再看
      

  7.   

    另外,在本帖的例子中,为什么是throw new ZeroDivideException(divisor+1);
    就是说这个参数为什么是divisor+1,而不是divisor?
    有什么区别么?
      

  8.   

    调试了一下,结果似乎都是一样的.那他为什么要写成这样?难道故意让我们想想的?public Exception(String s)这个方法具体是什么意思?
    里面的参数的作用是什么?
    有谁能帮忙解答一下,谢谢.
    结帖的时候会追加分数的.谢谢谢谢
      

  9.   

    public Exception(String s)
    这个是构造函数,代表用字符串S来抛出这个异常,比如有的时候你可以抛出
    throw new IllegalStateException("XXX不合法");这样,到时候你看异常的提示就是
    ...root: IllegalStateException XXX不合法了
    就是让你自己看得比较清楚,知道是哪里错了而已