簡體   English   中英

System.Exception或只是異常

[英]System.Exception or just Exception

我是編程的初學者,說實話我學到的一切,我想確保我正確地做到了。 我的問題是,在MSDN網站上,它說明了在處理異常時我必須使用“System.foo”,例如:

catch (System.DllNotFoundException ex)

但是我周圍的很多程序員都傾向於使用沒有標題的異常,例如:

catch  (DllNotFoundException ex)

我知道這可能是微不足道的,也許我非常愚蠢地問,但這兩種實現有什么真正的區別嗎? 喜歡哪兩個更好的做法?

我很感激任何建議,

提前致謝。

using System;
using System.IO;

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

要么

// not using that namespaces

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

所以沒有區別。 取決於您導入的名稱空間。

它們是表達完全相同的不同方式。 DllNotFoundException是System命名空間的一部分,它通常包含在using System; 默認情況下,該文件頂部的語句。 System.DllNotFoundException只是它的完整類型名稱。

通過using System; 在文件的頂部,您基本上為任何System。*類創建快捷方式,在您的文件中引用您的引用。 例如,您可以但不需要指定System命名空間。 相反,你可以不using System; 或任何其他使用,但那么您將通過其全名引用文件中的每個類型。

沒有區別,這只是一種風格差異。 在第二個示例中,您將需要一個using System; 聲明告訴編譯器在哪里找到DllNotFoundException。

System是命名空間。 命名空間用於組織代碼並處理命名問題。

DllNotFoundExceptionSystem命名空間的一部分,因此它的全名是System.DllNotFoundException

如果包含using System; 在文件頭中,您可以使用System命名空間中的所有類而不指定全名,從而導致DllNotFoundException

使用System.Exception是特定的,因為您可以在不同的庫中使用相同的名稱,您可以准確指定所需的名稱。 因此,它很可能是相同的,但這意味着如果有選擇,就沒有歧義。

在.NET中,名稱空間用於組織類型。 您可以使用它們的全名來訪問這些類型,在本例中為System.DllNotFoundException,或者在使用using語句時 - 在本例中使用System,您可以省略所有頂級系統類型的System點前綴。

在回答你的問題時,我認為你應該使用它,因為它通常使你的代碼更清晰,因為它更少的類型和讀取使用的類型。

當使用多個使用時,如果在System和Foo中存在DllNotFoundException,使用System並使用Foo類型,則可能存在使用類型的歧義....

當存在歧義時(編譯器會抱怨)你可以指定整個類型名稱或使用MyException = Foo.DllNotFoundException添加一個,然后可以使用MyException而不是Foo.DllNotFoundException錯誤名稱示例我知道:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM