在Java(GWT)中处理异常
我目前正在处理异常处理,我想知道应该在哪里捕获它们 以下是GWT应用程序中的堆栈:在Java(GWT)中处理异常,java,exception,gwt,exception-handling,error-handling,Java,Exception,Gwt,Exception Handling,Error Handling,我目前正在处理异常处理,我想知道应该在哪里捕获它们 以下是GWT应用程序中的堆栈: 具有可抛出NumerFormatExeption的方法的帮助器 (FormHelper.java) 使用此帮助程序的小部件(CostWidget.java) 调用此小部件以检索数据的presenter(BuildingPresenter.java) FormHelper.java public static Integer prepareIntegerForDb(String string) { re
- 具有可抛出NumerFormatExeption的方法的帮助器 (FormHelper.java)
- 使用此帮助程序的小部件(CostWidget.java)
- 调用此小部件以检索数据的presenter(BuildingPresenter.java)
public static Integer prepareIntegerForDb(String string) {
return Integer.parseInt(string);
}
CostWidget.java
public DetailCostProxy getCostDetail() {
...
costDetail.setQuantity(FormHelper.prepareDoubleForBd(qtTextBox.getText()));
...
return costDetail;
}
public List<DetailCostProxy> getCostList() {
...
costDetails .add(ligneCout.getCostDetail());
...
}
public DetailCostProxy getCostDetail(){
...
setQuantity(FormHelper.prepareDoubleForBd(qtextbox.getText());
...
返回成本明细;
}
公共列表getCostList(){
...
添加(ligneCout.getCostDetail());
...
}
BuildingPresenter.java
public void saveBuilding(final BuildingProxy inter, final CollectRequestContext savecontext) {
savecontext.save(display.getCostWidget().getCoutList()).fire(new Receiver<BuildingProxy >() {....
}
public void saveBuilding(final BuildingProxy inter,final CollectRequestContext savecontext){
savecontext.save(display.getCostWidget().getCoutList()).fire(new Receiver(){…)。。。。
}
我在想:
1) 将“抛出NumberFormatException”添加到帮助程序中的prepareIntegerForDb()
2) 将“抛出NumberFormatException”添加到小部件中的getCostDetail()
3) 将“抛出NumberFormatException”添加到小部件中的getCostList()
4) 在演示者中缓存异常(在saveBuilding中)
目的是:
- 记录异常
- 向用户提供一条消息,说明出现了问题
抛出NumberFormatException
声明不会帮助您“向用户提供一条消息,说明出现了问题”。NumberFormatException-s
是RuntimeException-s
,因此抛出声明甚至不会强制在使用这些方法的代码中执行try/catch
我的方法是处理GWT中异常的好方法吗?还是应该记录
直接在助手中或其他位置出错
4) 捕获演示者中的异常(在saveBuilding中)
目的是:
- 记录异常
- 向用户提供一条消息,说明出现了问题
这个问题并不特定于GWT
如果您知道如何处理异常,那么捕获异常是一个好主意
如果向用户发送错误信号,则需要让用户决定如何处理该问题(例如,弹出消息建议两个操作以恢复应用程序执行)
考虑到这一点,您如何看待这种方法
例如,我必须将此模式应用到整个应用程序中
(20多名演讲者)
添加抛出NumberFormatException
声明不会帮助您“向用户提供一条消息,说明出现了问题”。NumberFormatException-s
是RuntimeException-s
,因此抛出声明甚至不会强制在使用这些方法的代码中执行try/catch
我的方法是处理GWT中异常的好方法吗?还是应该记录
直接在助手中或其他位置出错
4) 捕获演示者中的异常(在saveBuilding中)
目的是:
- 记录异常
- 向用户提供一条消息,说明出现了问题
这个问题并不特定于GWT
如果您知道如何处理异常,那么捕获异常是一个好主意
如果向用户发送错误信号,则需要让用户决定如何处理该问题(例如,一条弹出消息建议恢复应用程序执行的两个操作)。prepareIntegerForDB()应引发异常。当Integer.parse()失败,并且您不必实际抛出异常
getCostDetail()应该显式地捕获和抛出异常,并可能扩展抛出异常的原因。类似于“成本不是可读的格式”。该方法只负责这一行
getCostList()应捕获并处理异常。该方法负责整个收集。如果不在此处处理坏数据,则会丢失好数据。以下是处理坏数据的一种方法
public List<DetailCostProxy> getCostList() {
...
try {
DetailCostProxy cost = lineCount.getCostDetail()
costDetails.add(cost);
catch (NumberFormatException e) {
costDetails.add(null);
}
...
}
public List getCostList(){
...
试一试{
DetailCostProxy成本=lineCount.getCostDetail()
成本详情。添加(成本);
捕获(数字格式){
costDetails.add(空);
}
...
}
最后,向用户显示数据的方法应该在显示数据之前解释传递给它的数据。如果使用上面的示例,这将与检查空值一样简单。prepareIntegerForDB()应该抛出该异常。当Integer.parse()失败时,这会自动发生,您不必实际抛出该异常
getCostDetail()应该显式地捕获和抛出异常,并可能扩展抛出异常的原因。类似于“成本不是可读的格式”。该方法只负责这一行
getCostList()应该捕获并处理异常。该方法负责整个收集。如果不处理坏数据,她将