黑马程序员技术交流社区

标题: 自定义异常中程序出现问题 [打印本页]

作者: 何明辉    时间: 2012-7-22 15:05
标题: 自定义异常中程序出现问题
class ZiYiException extends Exception
{
       private String name;
       public String getMessage(String name)
        {
             this.name=name;
              return name;
          }
}
class QiuHe
{
        int sum(int x,int y,int z)throws ZiYiException
        {
               if(x<0)throw new ZiYiException().getMessage("wrong");
                return x+y+z;
          }
}
class ExceptionDemo
{
           public static void main(String[] args)
           {
                 int sum;
  
                   try
                     {
                          sum=new QiuHe().sum(-1,5,6);
                           System.out.println(sum);
                       }
                   catch (Exception e)
                      {
                        System.out.println(e.toString());
                       }
                  System.out.println("over");
              }

程序中我自定义了一个异常,里面同过getMessage的方法实现对name赋值,实现对出现异常的详细描述,但就是不能编译,我怎么检查就是查不出来,这到底是那儿出现了问题啊


作者: 李伟    时间: 2012-7-22 16:44
package cn.itcast.test;

class ZiYiException extends Exception
{
       private String name="wrong";
       /*public String getMessage(String name)
        {
             //this.name=name;
              return name;
          }*/
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public String toString()//重写toString方法
        {
                return this.name;
        }
}
class QiuHe
{
        int sum(int x,int y,int z)throws ZiYiException
        {
               if(x<0)throw new ZiYiException();
              {
                       return x+y+z;
               }
           
          }
}
class ExceptionDemo
{
           public static void main(String[] args)
           {
                 int sum;
  
                   try
                     {
                          sum=new QiuHe().sum(-8,5,6);
                           System.out.println(sum);
                       }
                   catch (Exception e)
                      {
                          System.out.println(e.toString());
                       }
                  System.out.println("over");
              }
}
作者: 王璐    时间: 2012-7-22 18:09


作者: rslheima    时间: 2012-7-22 21:39
本帖最后由 rslheima 于 2012-7-22 22:04 编辑

首先:throw 语句是用来抛出异常的,throw 后边只能接 Throwable的子类,Exception就是Throwable的子类
如果你写成throw new ZiYiException().getMessage("wrong");  不就是抛出字符串了吗??所以类型错啦。

一般都这样写吧,如下你参考一下:
class ZiYiException extends Exception
{
       ZiYiException(String name){
               super(name);
       }
}
class QiuHe
{
        int sum(int x,int y,int z)throws ZiYiException
        {
               if(x<0) throw new ZiYiException("wrong");
                return x+y+z;
          }
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2