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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 班志国 中级黑马   /  2012-10-21 09:41  /  2268 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 班志国 于 2012-10-21 09:44 编辑

为啥定义两个构造函数呢 第一个构造函数 有什么作用呢 第一个调用的 是 throwable的空构造啊 有什么用啊 不明白【老毕面向对象第9-9自定义异常】

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

10 个回复

倒序浏览
话说 super后面的是方括号吗?不应该是 ()吗?
回复 使用道具 举报
江苏孙浩 发表于 2012-10-21 09:43
话说 super后面的是方括号吗?不应该是 ()吗?

由于暴风影音播放器的原因 导致()显示{}  
回复 使用道具 举报
本帖最后由 刘伟平 于 2012-10-21 09:51 编辑

你可以抛出不带参数的异常对象,如:throw new FuShuException();
也可以抛出在字符串说明的异常对象,如:throw new FuShuException("负数异常",-1);

如果不写空参数的构造函数,就不能抛出空参数异常对象了。
回复 使用道具 举报
刘伟平 发表于 2012-10-21 09:50
你可以抛出不带参数的异常对象,如:throw new FuShuException();
也可以抛出在字符串说明的异常对象,如: ...

不是有默认的构造函数吗
回复 使用道具 举报
班志国 发表于 2012-10-21 09:58
不是有默认的构造函数吗

需要注意构造函数的写法,如果不写构造函数,系统默认分配空参数构造函数,但是写了任意形式的构造函数,系统就不分配默认构造函数了。

点评

顶个!  发表于 2012-10-21 10:28
回复 使用道具 举报
其实第一个构造函数是为了重写覆盖系统默认的空参数构造函数,第二个构造函数是为了重载构造函数,使得程序可以接受带参数的构造函数,从而抛出特定的自定义异常...{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
七楼的哥们说的对。
回复 使用道具 举报
陈琦 中级黑马 2012-10-21 22:29:47
9#
异常类就和普通类一个样,按照普通类理解就可以了。
回复 使用道具 举报
彭旭文 发表于 2012-10-21 14:00
其实第一个构造函数是为了重写覆盖系统默认的空参数构造函数,第二个构造函数是为了重载构造函数,使得程序 ...

不写第一个 会怎么样啊
回复 使用道具 举报
班志国 发表于 2012-10-22 09:50
不写第一个 会怎么样啊

不写第一个不会有什么太大的问题,只是你不能使用
throw new FuShuException();
这样的方式抛出异常了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马