kei*_*bel 2 java architecture exception-handling exception eclipse-rcp
我必须重构使用Eclipse RCP创建的Java程序.我的前任通过几次调用向我要编写单元测试的类调用ViewPart实现.ViewPart是为了异常处理目的而移交的.每次发生错误时,错误消息都将写入ViewPart的StatusLineManager.
我现在要做的是改变这个异常处理过程,因为当我想进行单元测试时,它会给我带来很多问题.
有没有办法将这些异常传递给ViewPart而不将其交给多个方法调用?
我最初的想法是创建某种ExceptionMessenger类,每次发生异常时都会对其进行初始化.但我找不到一种方法来访问ViewPart.
编辑 代码示例:
class A {
void func() {
B.funcB(arg, arg1, arg2, ViewPart view):
}
}
class B {
void funcB(arg, arg1, arg2, ViewPart view) {
C.funcC(arg, arg1, ViewPart view);
}
}
class C {
void funcC(arg, arg1, ViewPart view) {
try{
doSomeThing():
catch(Exception e) {
doSomeErrorMessages(e, view);
}
}
void doSomeErrorMessages(e, ViewPart view) {
SomeOtherClass.writeToStatusLine( StatusCategory.Processing, e.getMessage(), view);
}
}
class SomeOtherClass {
void writeToStatusLine(final StatusCategory category, final String message, final ViewPart view) {
IActionBars bars = view.getViewSite().getActionBars();
IStatusLineManager statusLineManagerRef = bars.getStatusLineManager();
statusLineManagerRef.setErrorMessage(null); // clear any error msg
doWhatEver();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我正确地理解了您的任务,那么您需要处理异常的两个部分:
ViewPart
).由于这不是恢复或以其他方式处理异常情况的异常处理的一部分,因此我故意不使用Java的异常处理,即避免滥用控制流的异常处理.因此,我认为您的前任设计传递ViewPart
给然后将Exceptions作为参数传递给您ViewPart
是好的.另一种方法是让异常向上抛出,然后在层/框架的某个合理边界处进行可视化.但
ViewPart
(并且肯定混合了上面列出的两个部分).单元测试时你有什么问题?