一次改windows服務的**, 原來是用到了多執行緒, 這一次的改動比較大, 改完卻發現服務執行到一半就不行了, windows日誌也就提示服務已中止,但沒有具體的原因。對於服務,除錯什麼的比較麻煩, 又加上乙個多執行緒,導致排查bug異常艱難。雖然說可以先按單執行緒來寫測試用例,但實際專案比較龐大了, 要構造乙個測試用例都不容易。後來沒法,用了踩地雷法,一步步加日誌,看**出現了異常。日誌加了很多,最終還是找出了元凶——可能是犯迷糊,無意中把屬性指向了自己!
其實最初在學習屬性時, 老師就特別警告過: 如果屬性指向了自己, 會導致死迴圈。這個也沒什麼好追究了。
關鍵是如何來觀察、確定這種錯誤呢?
寫了一段最簡單的demo看看:
可以看到:try catch 都無法捕獲這個異常!
或者說: clr 認為這並不是乙個異常, 只是**在邏輯上有問題, 但這個問題它也不敢肯定就是寫**的人弄錯了, 只好這樣提示一下。
但這種情況, 有沒有辦法明確捕獲到而不致於出了問題找那麼困難呢?
如果哪位看官有更好的辦法請告知!
this指向自己理解的
關於this,總結起來,主要有以下幾個途徑能夠被運用到。1 物件方法中呼叫this 如果函式被當中物件的乙個方法進行呼叫,則this值指向該物件。var person person.sayname this person,alert welcome alice 在這裡,函式的this指向該物件 即 ...
C 自動型別轉換導致的微妙錯誤
vector t float ax 0.0f,float ay 0.0f,float az 0.0f x ax y ay z az vector t v1,v2 v v1 10.0f 上述紅色語句竟然通過編譯了,仔細檢查也沒發現相符的運算子過載。通過除錯發現有一次建構函式的呼叫,這才想起來c 的自動...
jdk版本導致的錯誤
重灌了系統,重灌了一切。用新裝的myeclipse匯入以前的struts工程後,執行時卻出現錯誤 class bytes found but defineclass failed 看這錯誤提示真的是莫名其妙了,左翻番右查查,愣是沒輒。仔細看了看console,恩,weblogic執行使用的是jdk1...