常見異常解決方案

  1. NullPointException
    一、是初始化的問題,變量或者對象沒有初始化,這是最基本的
    二、這個是今天遇到的,在此記錄一下:
    我將類中的一部分代碼提取出來新寫了一個成員方法,但是在這個成員方法中調用其他類的成員方法時出現了NullPointerException異常,Debug查了下傳值是沒有問題的,都已經初始化!多試了好幾次也是一樣,傳值沒有問題那麼就是調用方法的問題了!
    解決辦法:使用關鍵字“this”指定,在本類中調用方法時,如果方法沒有用static修飾,那麼這個方法是成員方法,成員方法可以通過兩種方式調用,一種是new對象,另一種則是使用“this”關鍵字.我這裏之所以報了空指針異常,估計是因爲成員方法的調用問題,沒有指明,加上一個“this”就解決了。

  2. ConcurrentModificationException異常原因和解決方法
    原因:使用Iterator遍歷/for循環遍歷,在遍歷的過程中使用list的remove(Object)方法刪除其中一個元素,下一次循環就會出現此異常!根本原因是調用list.remove()方法導致modCount和expectedModCount的值不一致。(參考源碼可得知)
    解決辦法:
    1>單線程模式下:可使用Iterator自帶的remove()方法移除元素。
    2>多線程模式下:由於是多線程,remove()方法移除的有可能只是其中一個線程中的元素,所以可使用如下方法解決:
    a)在使用iterator迭代的時候使用synchronized或者Lock進行同步;
    b)使用併發容器CopyOnWriteArrayList代替ArrayList和Vector。(這方法我也不會0.0.)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章