私はオンラインで検索していくつかの本を調べてきましたが、与えられた例は限られており、ユーザー定義の例外にはまだ疑問があります.
例として次のコードを使用します。
//Conventional way of writing user-defined exception
class IdException extends Exception
{
public IdException(String s)
{
super(s);
}
}
class Product
{
String id = new String();
public Product(String _id) throws IdException
{
id = _id;
//Check format of id
if (id.length() < 5)
throw(new IdException(_id));
}
}
ユーザー定義の例外を記述する従来の方法は、ほぼ常に同じようです。ユーザー定義の例外のコンストラクターでは、常に を呼び出しますsuper(msg)
。これは私の中で疑問を引き起こします: ほとんどの例外がこのように実装されている場合、これらすべての例外の間にどのような違いがありますか?
たとえば、複数のユーザー定義の例外を設定できますが、すべて同じことを行っているように見えますが、違いはありません。(これらの例外には実装がありません。何が機能するのでしょうか?)
例:
class IdException extends Exception
{
public IdException(String s)
{
super(s);
}
}
class NameException extends Exception
{
public NameException(String s)
{
super(s);
}
}
class ItemException extends Exception
{
public ItemException(String s)
{
super(s);
}
}
QUE:では、(たとえば)id
例外クラス内のチェックを実装するべきではありませんか? すべての例外クラスが同じことをしているように見えない場合 (または何もしていない場合)。
例外でチェックを実装する例:
class IdException extends Exception {
public IdException(String s)
{
super(s);
//Can we either place the if-statements here to check format of id ?
}
//Or here ?
}