C# 系统异常还是仅仅异常
我是一个编程新手,老实说,我学到的每一件事我都想确保我做得正确。 我的问题是,在MSDN网站上,它说明了在处理异常时,我必须使用“System.foo”,例如:C# 系统异常还是仅仅异常,c#,.net,exception,try-catch,C#,.net,Exception,Try Catch,我是一个编程新手,老实说,我学到的每一件事我都想确保我做得正确。 我的问题是,在MSDN网站上,它说明了在处理异常时,我必须使用“System.foo”,例如: catch (System.DllNotFoundException ex) catch (DllNotFoundException ex) 但我周围的许多程序员都倾向于使用不带标题的异常,例如: catch (System.DllNotFoundException ex) catch (DllNotFoundExceptio
catch (System.DllNotFoundException ex)
catch (DllNotFoundException ex)
但我周围的许多程序员都倾向于使用不带标题的异常,例如:
catch (System.DllNotFoundException ex)
catch (DllNotFoundException ex)
我知道这可能很琐碎,也许我问得很愚蠢,但这两种实现有什么真正的区别吗?两种方法中哪一种更好
谢谢你的建议
提前感谢。它们是表达完全相同事物的不同方式。DllNotFoundException是系统名称空间的一部分,通常包含在使用系统的
中默认情况下,代码>语句位于文件顶部。System.DllNotFoundException只是它的完整类型名
通过使用系统放置代码>在文件顶部,您基本上是在为任何系统创建快捷方式。*在该文件中创建您的引用类。例如,您可以,但不需要指定系统名称空间。相反,您可以不使用系统而使用代码>或任何其他用法,但您必须按文件的全名引用文件中的每种类型。没有区别,只是样式不同而已。在第二个示例中,您需要一个使用系统代码>语句,告知编译器在何处查找DllNotFoundException
using System;
using System.IO;
...
catch (DllNotFoundException)
{
}
catch (IOException)
{
}
或
所以没有区别。仅取决于您导入的名称空间。System
是一个名称空间。名称空间用于组织代码和处理命名问题
类DllNotFoundException
是System
命名空间的一部分,因此其全名为System.DllNotFoundException
如果包括使用系统的
到文件头中,您可以使用系统
命名空间中的所有类,而无需指定全名,从而导致DllNotFoundException
使用系统。异常是特定的,因为您可以在不同的库中使用相同的名称,您可以准确地指定所需的名称。因此,很可能是相同的,但这意味着如果有选择,就没有歧义。在.NET中,名称空间用于组织类型。在本例中,您可以使用这些类型的全名System.DllNotFoundException来访问它们,或者在使用using语句时—在本例中,使用System,您可以省略所有顶级系统类型的System点前缀
在回答您的问题时,我认为您应该使用using,因为它通常会使您的代码更干净,因为对于所使用的类型,键入和读取的次数更少
当使用多个using时,所使用的类型可能会有歧义,例如,如果在System和Foo中存在DllNotFoundException,其中键入了using System和using Foo
当出现歧义时(编译器会抱怨),您可以指定整个类型名称,或者使用MyException=Foo.DllNotFoundException添加一个,然后可以使用MyException代替Foo.DllNotFoundException坏名称示例:)正如BrandonZeider所说,这只是一个样式差异。:-)谢谢你,我现在明白得更清楚了,非常感谢你的时间:)@csharpingnoob:很高兴你帮了我的忙!:)别忘了,你可以投票选出好的答案,然后接受最适合你的答案。其他答案都是正确的。我要补充的唯一一点是,两者最终编译成完全相同的东西。生成的IL仅使用完全限定的类型名。这意味着这两种做法都不是更好的做法,尽管导入常用名称空间有助于缩短代码并使其更易于阅读。就“更好的做法”而言,大多数人倾向于使用using语句并从类中删除名称空间(例如“DllNotFoundException”)。它更容易阅读,因此更可取。通常,只有当您使用两个不同的名称空间和两个名称相同的类时,才会写出带有名称空间的完整类名。@CodeMonkey1:我认为最好的做法是将名称空间保留1到2次,如果出现更多次,则导入名称空间