gpt4 book ai didi

c# - 在开发模块化应用程序时使用快速失败的方法

转载 作者:行者123 更新时间:2023-12-03 07:48:06 24 4
gpt4 key购买 nike

在开发模块化应用程序时,很明显我们需要使用 Fail-fast系统?

创建模块时,如果模块无法处理的错误情况,它应该报告错误(如抛出异常......)而不用担心谁来处理它。看起来这可以作为开发模块时的指南。这有什么问题吗?

编辑 :例子

在 module.dll

public class SomeClass:ISomeInterface
{

public void CreateFile(string filename)
{
//The module have no idea who calls this. But there is something wrong
//somewhere so throw an exception early. The module writer has no control over
//how the exception is handled. So if this exception is not handled by the
//Client Application the application can potentially crash.Do he need to worry
//about that?
if(filename == null)
{
throw new ArgumentNullException("Filename is null");
}

//I think the following is bad. This code is making sure that a module
//exception wont crash the application.Is it good?
//if(filename ==null)
//{
//Logger.log("filename is null");
//return;
//}
}
}

最佳答案

我可以看到两类严重异常:其中整个系统可能已被破坏,并且没有太多可以安全假设的情况,以及那些代码正在运行的系统的重要方面期望“正常工作”,不会,但没有理由相信系统的其他部分受到损害。在前一种情况下,除了死机之外,程序实际上并没有什么可以做的,如果它可以在不破坏任何“主线”数据的情况下记录发生的事情,则可能会尝试记录发生的事情。但是,在后一种情况下,终止应用程序将过于“粗鲁”。恕我直言,更好的方法是设计子系统,以便代码可以“拔掉插头”以防止它导致数据损坏,结果是任何进一步尝试使用它(除了“你还在工作吗”查询,其返回值应该表明问题)可能会立即引发异常,但允许程序中不需要有问题的子系统的部分继续运行,除非或直到他们决定没有太多东西可供他们使用没有它。

关于c# - 在开发模块化应用程序时使用快速失败的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10296961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com