System.Exception или просто Exception - PullRequest
3 голосов
/ 02 апреля 2011

Я новичок в программировании и, честно говоря, все, что я изучаю, я хочу убедиться, что я делаю это правильно. Мой вопрос на сайте MSDN показывает, что при обработке исключений я должен использовать «System.foo», например:

catch (System.DllNotFoundException ex)

Но вокруг меня много программистов, которые склонны использовать исключения без заголовка, например:

catch  (DllNotFoundException ex)

Я знаю, что это может быть тривиально и, возможно, очень глупо с моей стороны спрашивать, но есть ли реальная разница в этих двух реализациях? например, какая из этих двух практик лучше?

Я ценю любой совет,

Заранее спасибо.

Ответы [ 6 ]

4 голосов
/ 02 апреля 2011
using System;
using System.IO;

...
catch (DllNotFoundException)
{
}
catch (IOException)
{
}

или

// not using that namespaces

...
catch (System.DllNotFoundException)
{
}
catch (System.IO.IOException)
{
}

Так что нет никакой разницы. Зависит только от того, какие именно пространства имен вы импортировали.

3 голосов
/ 02 апреля 2011

Это разные способы выразить одно и то же.DllNotFoundException является частью пространства имен System, которое обычно по умолчанию включается в оператор using System; в верхней части файла.System.DllNotFoundException - это просто полное имя типа.

Помещая using System; вверху файла, вы в основном создаете ярлык для любого System. * Классы, ссылки на которые содержатся в этом файле.Например, вы можете, но вам не нужно указывать пространство имен System.И наоборот, вы можете обойтись без using System; или любого другого использования, но тогда вам придется ссылаться на каждый тип в вашем файле по его полному имени.

2 голосов
/ 02 апреля 2011

В .NET пространства имен используются для организации типов.Вы можете получить доступ к этим типам, используя их полное имя в этом случае System.DllNotFoundException или при использовании оператора using - в этом случае с помощью System вы можете опустить префикс System dot для всех типов систем верхнего уровня.

В ответ на ваш вопрос, я думаю, вы должны использовать использование, поскольку оно обычно делает ваш код чище, так как меньше печатать и читать для используемых типов.

При использовании нескольких использований могут быть неоднозначности типов, используемых, напримересли DllNotFoundException существовал в System и Foo, где использовалось System и Foo, было набрано ....

При наличии неоднозначностей (компилятор будет жаловаться), вы можете указать полное имя типа или добавить MyException = Foo.DllNotFoundException, затем MyException можно использовать вместо примера плохого имени Foo.DllNotFoundException, которое я знаю:)

2 голосов
/ 02 апреля 2011

Использование System.Exception является специфическим, поскольку вы можете иметь одинаковые имена в разных библиотеках, вы можете указать, какое именно вы хотите.Ergo, скорее всего, то же самое, но это означает, что если бы был выбор, нет никакой двусмысленности.

2 голосов
/ 02 апреля 2011

System - это пространство имен.Пространства имен используются для организации вашего кода и решения проблем с именами.

Класс DllNotFoundException является частью пространства имен System, поэтому его полное имя System.DllNotFoundException.

Если вы включитеusing System; в заголовок вашего файла вы можете использовать все классы из пространства имен System без указания полного имени, в результате чего DllNotFoundException.

2 голосов
/ 02 апреля 2011

Нет разницы, это просто разница в стиле.Во втором примере вам понадобится оператор using System;, чтобы сообщить компилятору, где найти исключение DllNotFoundException.

...