我遇到了一个必须重写Object的toString()方法的问题,但是原始方法没有引发任何异常。但是,我正在使用一些需要抛出异常的通用代码。
public String toString() throws EmptyListException, InvalidPositionException
{
Position<Entry<E>> current = fList.first();
StringBuilder str = new StringBuilder();
for(int i = 0; i < size(); i++)
{
try
{
str.insert(str.length(), current.element().toString() + " ");
current = fList.next(current);
}
catch(Exception e){}
}
return str.toString();
}
Run Code Online (Sandbox Code Playgroud)
这是FavoriteList.java的一部分。这些异常必须抛出。如果可以通过某种方式抑制这些异常或将其捕获到方法中,那将很有帮助。
最后,我的方法标题必须如下所示:
public String toString()
{ content }
Run Code Online (Sandbox Code Playgroud)
我不在乎方法的结尾内容。只要可以编译,我就很好。我只需要修复标题,但是找不到解决方法。提前非常感谢您。
小智 14
首先,抛出异常toString()是一个非常糟糕的主意。toString()用于许多系统软件(例如调试器)中以生成对象的表示形式。
第一个优先选择是做其他事情,可能创建一个可能抛出的不同方法,并在toString()调用该方法时捕获异常并产生替换输出,例如
super().toString() + " threw " + exception.toString();
Run Code Online (Sandbox Code Playgroud)
如果您确实必须抛出,则可以执行以下操作:
try
{
str.insert(str.length(), current.element().toString() + " ");
current = fList.next(current);
}
catch(Exception e){
throw new IllegalStateExcception(super.toString(), e);
}
Run Code Online (Sandbox Code Playgroud)
这会将检查的异常(从java.lang.Exception派生)包装在未检查的异常(从java.lang.RuntimeException派生)中。无需添加throws子句。
| 归档时间: |
|
| 查看次数: |
2280 次 |
| 最近记录: |