在使用庫(目前是 PNP Core SDK)時,我經常注意到在檢查某些物件時,它們具有許多“引發例外”的屬性。
這看起來像這樣:

但這究竟意味著什么?
這是否意味著如果我嘗試訪問該值會引發例外?但我認為 getter 永遠不應該拋出例外。這是一個不好的做法嗎?
那么除錯器是否已經嘗試訪問所有這些屬性,因此提前“知道”如果我嘗試在運行時訪問這些屬性,它會拋出例外?
這些財產狀態應該與開發商溝通什么?如果我看到了,我該怎么做?
uj5u.com熱心網友回復:
是的,除錯器評估所有這些屬性。而在這樣做的時候,他遇到了一個例外。文本(在您的螢屏截圖上不完全可見)將指示引發例外的原因。一個典型的原因是該物件不再有效(例如,它已被處置)。某些屬性也可能會拋出例外,因為出于技術原因除錯器無法評估它們。System.Type例如,當使用除錯器查看實體時,可能會發生這種情況。
出于這個原因,建議屬性是輕量級的,不應該拋出例外。涉及例如訪問資料庫或查詢某些硬體資訊的復雜操作不應該通過屬性來完成。但并非所有 API 實際上都遵循此建議。
甚至在某些情況下,除錯器可能會由于其屬性評估而導致副作用,因此 get 屬性不應更改物件的狀態。使用以下屬性的代碼在除錯時的作業方式與不除錯時不同:
public int NextNumber
{
get
{
return _number ;
}
}
要在除錯器中禁用屬性評估,請轉到工具->選項->除錯并取消選擇“允許屬性評估和其他隱式函式呼叫”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443506.html
