Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c#应用程序中设计异常_C#_Exception - Fatal编程技术网

在c#应用程序中设计异常

在c#应用程序中设计异常,c#,exception,C#,Exception,在设计应用程序时,有两个选项可以选择如何设计例外(imo): 您可以为特定案例创建特定异常,并从System.Exception或其他子系统异常继承它们 或者为应用程序创建一个基本异常,该异常可能继承自System.exception,如MyAppException:System.exception,然后从该基本异常继承所有自定义异常 一般来说,我不会问哪种方法更好,因为我认为没有明确的答案。但是,我想知道哪种方法更适合于哪种应用程序,例如,一种更适合winforms应用程序,另一种更适合类

在设计应用程序时,有两个选项可以选择如何设计例外(imo):

  • 您可以为特定案例创建特定异常,并从System.Exception或其他子系统异常继承它们

  • 或者为应用程序创建一个基本异常,该异常可能继承自System.exception,如MyAppException:System.exception,然后从该基本异常继承所有自定义异常


一般来说,我不会问哪种方法更好,因为我认为没有明确的答案。但是,我想知道哪种方法更适合于哪种应用程序,例如,一种更适合winforms应用程序,另一种更适合类库。

没有明确的答案。无论应用程序的类型如何,在某些情况下最好抛出一个“通用”应用程序(可能包含作为InnerException的特定应用程序),在某些情况下从现有异常继承是有意义的


更重要的是要考虑谁会抓住例外,以及他应该如何处理他们。

嗯,我希望在WHO的什么关系中找到一些模式,或者至少一些可以回答自己的问题来帮助整理这些想法。我也希望得到一些澄清。想想谁会抓住例外,他能做些什么。如果您正在进行范围检查等,ArgumentException就足够了,任何人都可以做的就是记录它。另一方面,如果信用卡无法验证,您应该抛出一个带有状态代码和解释的特定异常,让更高层的人决定该做什么-尝试其他银行还是拒绝客户?我放弃,您可能是对的。通常情况下,应用程序不会定义这样一个常见的异常,因为通常您会在某个位置捕获所有异常并记录它们,并向用户显示一些“对不起”消息,而另一方面,库会定义这样一个异常,以使其用户能够从库中捕获异常。至少我可能会这样做。