A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何明辉 中级黑马   /  2012-7-22 15:05  /  1420 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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赋值,实现对出现异常的详细描述,但就是不能编译,我怎么检查就是查不出来,这到底是那儿出现了问题啊

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

3 个回复

倒序浏览
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");
              }
}

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 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;
          }
}

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马