C#创建错误检查类?

时间:2010-05-18 14:26:36

标签: c# oop error-handling

我对OOP很新,在我正在编写的程序中,我有一个包含一些常规方法的Utilities类。我应该在Utilities类中包含我的错误检查,还是应该仅为错误检查创建一个新类?

7 个答案:

答案 0 :(得分:2)

“公用事业”课程倾向于成为怪物的恶习 - 将错误检查代码分开。

答案 1 :(得分:1)

我不知道您想要做什么,但可以肯定的是,错误检查类不应该在您的Utilities类中。错误处理是一类威胁它自己的类的功能。

另外,请记住OOP 将您的函数和例程放在类中。 OOP正在制作代表事物的类。尽量避免使用“实用工具”课程。

答案 2 :(得分:1)

一般来说,我要么在编写代码时处理错误,要么让调用者处理错误(即让异常通过调用堆栈)。它是否是效用函数并不重要。

public static class Utility
{
    public static string GetSomeString(string someOtherString)
    {
        try 
        {
            // something
        }
        catch (exception ex) 
        {
            // handle error
        }
        return result;
    }
}

答案 3 :(得分:0)

我认为都不是。错误通常是异常,它们是自己的类,并且在您知道如何处理它们的地方完全处理。

如果您正在寻找日志记录或类似任务,您应该使用完成的框架,例如Log4Net,或使用PostSharp提供的AOP。

答案 4 :(得分:0)

错误检查,这样的输入验证应该与需要检查的内容一起 - 除非它相当复杂,在这种情况下应该将它移动到被检查事物的类中的单独方法。如果它仍然太复杂,那么应该制作一个专门用于验证的单独的类。验证类应嵌套在主类中,或者应标记为internal

答案 5 :(得分:0)

如何在Global.asax文件中使用Application_Error事件?当应用程序中发生任何未处理的错误时,会被触发。

答案 6 :(得分:0)

有不同形式的错误检查

如果你的意思是在有效性的意义上进行错误检查id jsut在代码中执行...当你发现你有常见的测试时,EG字符串有长度,也许正则表达式...整数有一个范围......我结束了使用这些测试的静态类,但这只是一个重构。我最终得到一个带有子静态类的静态类来获取方法......

单元测试

这些将在与主代码不同的项目中再次简单地定义方法范围。

错误检查

我倾向于在整个商店使用debug.assert语句在我的方法和函数中进行一般错误检查,以便在调试时测试假设 - 我倾向于将它们用作单元测试的弱形式。

例外管理

这取决于您正在使用的区域。后端的例外管理方案与前端有很大不同。

for iinstance WCF有一个异常接口。 IErrorHandler iirc正确,但就连接到它的任何东西而言,只有一些可以触发的错误。在后端,这些故障可能是由异常引起的,这些异常是很多异常,并且在所有级别都附加了数据。您不希望数据到达前端 - 但您需要记录它。因此,前端的异常只是真正异常的外壳......我的观点是,当你排序出来时,你的实用程序类将是巨大的,你会想要开始将它分解为几个类

但这就是为什么异常需要在一个单独的项目中 - 然后你可以从全部引用它们并重用它们。

我有一个项目,我倾向于包含处理错误。 我还有一个WCF服务设置,我可以触发异常,以便记录它们,如果我们了解它们(考虑目标错误修复)。

事情如何发展的一个例子是,这部分需要能够序列化错误及其所有数据。

所以我会回避单个实用程序类......一旦开始范围蔓延,以单一方法开始的事情通常以惊人的速度增长。

这种超越OOP的更多架构问题 - 您需要知道为什么要将代码移动到实用程序类中,然后需要决定是否只是将它放在那里就足够了......我建议你移出它很好,但你应该更进一步,将错误管理视为一个完整的解决方案。它乞求SOA风格的解决方案(或至少是项目)imo ....它的一个不仅在应用程序中很常见,而且也是不变的......