2012-03-15 50 views
0

下面的代碼行引起了我的異常調試 - 下一步?

using (new INVU.API.CallContextStore()) 
{ 
plug.Instance.AddDocuments(new Int32[] { val_pid }, val_ptype, val_doccat, val_subcat, val_doctype, val_notes, val_summary, SummaryAppendOptions.None, val_docStatus, new String[] { PDFFile }); 
} 

這是異常詳細信息。

System.Exception was caught 
Message=Object reference not set to an instance of an object. - Error when trying to save document 
Source=SimsBridge 

StackTrace: 
    at SimsBridge.Bridge.AddDocuments(Int32[] personIds, Int32 PersonType, String docCatagory, Int32 subCatagory, String docType, String notes, String summary, SummaryAppendOptions summaryOptions, String documentStatusCode, String[] filePaths) 
    at ManagedScanDesktop.Form1.SimsScanComplete(String[] files) in C:\Working\ManagedScanDesktop 1.8\v1.8\ManagedScanDesktop\ManagedScanDesktop\Form1.cs:line 2619 
InnerException: 

我一直在嘗試,現在調試好幾個小時了,而我已經學到了很多關於這個特定的程序是如何工作的我還沒有真正遠矣。

我對之前關於使用調試信息的問題做了一些迴應,這似乎證實了我對Exception的初步看法。

Correctly using stacktrace to debug

現在,在第一I假定SimsBridge對象沒有被初始化,但我已經發現以來在哪裏發生這種情況的代碼(需要用戶/作爲參數傳遞)。我已成功登錄,並且服務器的詳細信息將返回並顯示在我的表單上。

Little screenshot to show what I mean... http://i41.tinypic.com/10dejao.jpg

(參數都不是空要麼)

網絡錯誤是我其他的懷疑,因爲我已經看到了包裝這一計劃工作的EXE安裝程序。所以應該工作。 但是,我可以登錄的事實與此相反...

我感覺有點失落在哪裏看下一個,這裏有沒有人在這裏工作,我可以問。

問:你試圖追蹤這個問題的原因的下一步是什麼?

回答

2

如果沒有參數爲null(所有這些東西val_)和既不plug.Instance爲空,那麼該故障可以在內部在AddDocuments方法所在。如果你不能控制這個代碼(例如,它是第三方),那麼你所能做的就是確保你正確地使用了代碼。否則,你會被拒絕向圖書館的作者發佈問題。

你所知道的是,某處某處是空的。沒有任何東西顯示爲空(除了可能的DatabaseName),以便只保留您正在調用的方法的內部狀態。

對我來說,下一步就是創建一個小應用程序,除了你要做的事情(AddDocuments在這種情況下)之外什麼也不做,看看你能否得到它的工作或再次複製問題。如果你能得到它的工作,那麼代碼審查原始的東西,看看你是否有任何地方發生輕微的邏輯錯誤。如果你可以複製它,把它發佈給代碼作者作爲一個問題,並看看他們說什麼。

+0

感謝您的迴應,我自己傾向於此,但不想跳到它。 – Amicable 2012-03-15 13:44:53

+0

@Amicable沒問題。如果你得到一個堅實的答案,我會感到驚訝。 NullReferenceException幾乎是每個開發人員存在的禍根,尤其是當它不在代碼中時:--P – 2012-03-15 13:46:17