我正在开发在更大的执行程序中运行的软件,我只能使用其API进行通信。经过广泛的测试,我已经确定执行中存在一个关于如何处理异常的架构问题。
执行程序以弹出对话框的形式进行自己的异常处理,为用户提供有关异常的信息。根据程序的行为,我怀疑它类似于:
// Executive Program
try {
// A simple state machine controlling execution mode within the Executive Program
// Not actually certain a switch is used, but this is representative of behavior
switch(executiveStateMachine){
case setUp:
// [....]
break;
case starting:
// [....]
break;
case run:
while(true){
// [...]
// My software running inside executive program
// [...]
// Eventual break after successful completion
break;
}
break;
case finish:
// [....]
break;
}
}
catch(Exception except){
// On any, show a proprietary exception dialog
if(ExceptionDialog.ShowDialog(Exception) == DialogResult.OK) break;
}
处理异常时,执行程序似乎偶尔会在其状态机转换中产生致命错误,从而导致整个程序崩溃。
虽然我已经向Executive的开发人员提交了一个错误请求,但我认为它不会很快修复,并且我真的想自己处理我自己软件的例外和执行程序的例外情况。
在更大的封装(和看不见的)try-catch块之前,C#是否可以使用某种方法捕获异常?