C#异常处理程序下一步继续

C#异常处理程序下一步继续,c#,error-handling,code-conversion,C#,Error Handling,Code Conversion,我一直在研究如何在发生异常时改变c#方法执行的行为,以支持: 重试/继续:能够再次尝试同一语句并在成功后继续 跳过/恢复:移动到下一条语句并继续执行 我读过很多回复,说这是糟糕的编码实践,但这是针对代码转换器的,它从支持此功能的语言转换数百万行代码。我需要在功能上保持一致。您唯一的选择可能是采用这样一种(坦率地说是可怕的)风格: var done = false; while (!done) { try { line1(); done = true; } catch {} } done = fa

我一直在研究如何在发生异常时改变c#方法执行的行为,以支持:

重试/继续:能够再次尝试同一语句并在成功后继续 跳过/恢复:移动到下一条语句并继续执行


我读过很多回复,说这是糟糕的编码实践,但这是针对代码转换器的,它从支持此功能的语言转换数百万行代码。我需要在功能上保持一致。

您唯一的选择可能是采用这样一种(坦率地说是可怕的)风格:

var done = false;
while (!done) { try { line1(); done = true; } catch {} }
done = false;
while (!done) { try { line2(); done = true; } catch {} }
// etc
混有:

try { line1(); } catch {}
try { line2(); } catch {}
// etc

请放心,拥有数百万条这样的线路将使它的余生很难保持下去,也很烦人。

是的,而且+1表示“可怕”。但对于一台发电机来说,这可能是可行的。事实上,维护起来很糟糕。我也从类似的角度进行了研究。不支持“继续下一步”,只支持“重试”。您对代码或IL编织是否可以将此功能注入有何想法?我可能可以按原样转换为上述格式,但可以想象,编织也可以解决遗留下来的维护负担?VB.NET的
On Error Resume Next
的实现与您想象的一样可怕。唯一好的建议是不要转换,源语言在.NET中并不重要。或者用语言转换器机械地完成。或者要考虑为什么要转换,当然是修复现有的代码了吗?它已损坏,请不要重复相同的错误。@Hans-转换的语言不是基于VB的,而且现有代码本身也没有损坏。不管怎样,如果可能的话,我还是有充分的理由皈依的,这就是我在这里试图证明的。好吧,不要保守秘密,这没有意义。除非你不想得到最好的答案。@Hans-只是觉得原始技术与c#查询无关,否则它就有可能被告知要坚持我们所拥有的,或者将其重构为更“最佳实践”。我试图确定在这一点上写一个不动手的转换有多困难,并且知道这是一个多大的工作,我们最终会得到什么,然后可以考虑到继续进行的利弊。异常处理可能是一个关键点。