2017-09-04 65 views
0

例外,我寫了這個代碼:的SqlXml,我不能扔在錯誤的XML

SqlXml s = new SqlXml(new MemoryStream(new UnicodeEncoding().GetBytes("asd"))); 

但爲什麼它不牛逼給我任何例外......爲什麼呢?

,如果我嘗試:

SqlXml s = new SqlXml(new MemoryStream(new UnicodeEncoding().GetBytes("asd"))); 
String g=s.Value; 

我對價值分配例外。 我錯了?

提前致謝!

+0

這與sql-server或sql有什麼關係? – GuidoG

+0

,因爲我在SQL服務器上使用DLL(CLR)... – elle0087

+0

有成千上萬的可能的異常,可以拋出,你得到了哪一個? – GuidoG

回答

1

因爲只需調用構造函數就不會對該類型的流執行任何操作(請參閱code)。只有當你對實例「做些什麼」時,它纔會嘗試讀取數據/流,並按順序拋出異常。

Value -property就是這樣一個事情,它會導致傳入的流被實際讀取。還有其他的,請檢查documentation

所以,如果你真的想用這個類來檢查流是否包含有效的XML,那麼就像你已經做的那樣。調用SqlXml.Value屬性(並且可能會將其分配給字符串以獲得更好的效果,即使您不使用它)。如果拋出,XML是無效的 - 就像你已經觀察到的那樣。