它将有两个构造函数,一个默认值和一个显式值,它使用消息“您指定的图形的尺寸非法。
听起来您的两个构造函数真正需要的是一个默认(无参数)以及一个接受String
参数的构造函数。例如,
public IllegalDimensionException() {
super(Eplicitm);
}
public IllegalDimensionException(String m) {
message = m;
}
默认构造函数中的super()
调用将调用Exception
的构造函数,它接受 a String
,并将你的传递Eplicitm
给它。
但是,您在上面的代码片段的逻辑中存在几个基本缺陷,我想向您指出:
您不能为构造函数指定额外的返回类型(就像在“构造函数二”中所做的那样public void IllegalDimensionException
)。这是因为IllegalDimensionException
本质上是返回类型,因为您正在使用它创建对象的新实例。您上面的签名将改为创建一个名为的新方法IllegalDimensionException
,该方法返回void
并且必须由此异常的实例调用......因此您实际上创建了一个名称过于复杂(且格式错误)的 setter 方法。
Exception
拥有一个main(String[])
方法是没有意义的。Amain()
本质上是整个程序的启动,而 an是在Exception
程序中出现问题时创建的东西。当您创建更复杂的项目时,您将希望使每个类的功能从根本上保持独立、独特和合乎逻辑。
应将诸如默认值之类的常量声明为private static final
. 正如您的代码所代表的那样,任何可以获取您的实例的代码都可以IllegalDimensionException
通过简单地调用来更改默认消息theException.Eplicitm = "Yo yo yo, wassup."
。不是很有帮助的错误信息。这是因为变量的默认隐私是public
. 幸运的是,您还没有声明它static
,所以这样的更改只会影响异常的一个实例......但是更好的做法是在创建的所有可能的异常中只有一个不可变的版本。
变量名应采用驼峰式 ( variableName
),而类名应以大写字母 ( ) 开头MyClass
。常量应全部大写,下划线 ( MY_CONSTANT_VALUE
) 分隔。
上面的一些可能听起来很挑剔,但事实并非如此。以上所有内容要么关闭代码中的漏洞(其中一些非常危险),要么使您的代码更具可读性(您会发现这是一个很大的好处 - 因为即使您也会忘记为什么您写了一些部分三个月后你回去看它的代码)。例如,我确信我不是唯一一个花了一段时间才弄清楚你的意思的专业程序员Eplicitm
(除了拼写),因为它看起来像一个复杂的自定义对象的名称......不是String
!