android java 指针异常处理,Android程序员日常开发中异常总结
CaptainAndroid.png
Java異常
平時開發中遇到的java異常很多,因為引起原因一目了然,當然也有不好解決的,比如一個簡單的空指針異常你可能始終無法找到其為空的原因,甚至使用前還做了空判斷。也有可能一個類型強制轉換異常被報了出來可是你始終無法找到為什么出錯的原因。偶先幾率極低,只能catch的來了事。
NullPointerException空指針引用異常
ClassCastException 類型強制轉換異常
IllegalArgumentException 傳遞非法參數異常
ArithmeticException 算術運算異常
ArrayStoreException 向數組中存放與聲明類型不兼容對象異常
IndexOutOfBoundsException 下標越界異常
NegativeArraySizeException 創建一個大小為負數的數組錯誤異常
umberFormatException 數字格式異常
SecurityException 安全異常
10.UnsupportedOperationException 不支持的操作異常
CSDN上更多的java異常
Android自身特性異常
java.lang.NullPointerException
異常原因:另一種情況使用fragment時,fragment相關布局,必須給每個view設置id,否則通過activity獲得fragment的實例時會出現以上異常
解決方法:為fragment布局的每個view設置ID
Android中引入第三方Jar包的方法(Java.lang.NoClassDefFoundError解決辦法)
1、在工程下新建lib文件夾,將需要的第三方包拷貝進來。
2、將引用的第三方包,添加進工作的build path。選中jar包->Build Path
3、(關鍵的一步)將lib設為源文件夾。如果不設置,則程序編譯可以通過,但運行的時候,會報:選中lib文件夾->source code
java.lang.NoClassDefFoundError
Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解決辦法)
Caused by: android.os.TransactionTooLargeException
導致原因是:Binder傳輸的數據太大
如果Binder的參數或返回值太大,不適合的事務緩沖區,然后調用將失敗,并將被拋出TransactionTooLargeException。
解決方法:
不要將大量數據傳入Binder
android.database.CursorWindowAllocationException:Cursor window allocation of 2048 kb failed
導致原因:主要原因是因為使用了SimpleCursorAdapter類,其中的Cursor參數需要我們手動關閉,否則就會出現以上異常。
解決方法:cursor.close()
Excessive JNI global references錯誤的解決方案 GREF暴增
導致原因:vm對jni層的reference有個數限制,過多很造成VM aborting。因此每次在GREF增加到2000以上的時候就直接aborting了
解決方法:及時回收或關閉引用
android.view.WindowManager$BadTokenException: Unable to add window -- token
導致原因:使用getApplicationContext()獲得的Context,而必須使用Activity,因為只有一個Activity才能添加一個窗體。
解決方法:采用當前Activity的Context
android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file
導致原因:重復安裝軟件,導致Sqlite3打開數據庫異常
解決方法:卸載相應軟件,開關機,重新安裝該軟件,即可以解決相關異常。
java.util.ConcurrentModificationException(并發操作異常)
異常原因:ArrayList是非線程安全的,當同時在遍歷和修改ArrayList時,就會出現該異常
解決方法:使用Vector替換ArrayList,Vector是線程安全的。Vector的缺點:大量數據操作時,由于線程安全,性能比ArrayList低
so庫文件異常(JNI層異常)
異常原因:在Android應用層開發中,我們經常會使用so庫文件。當so庫文件發生異常時,我們只能在adb log中發現fatal libc這樣的異常信息,僅此而已,并不能發現異常調用的邏輯關系, 這是我們就需要查看so 庫異常Log信息。在Android手機的/data/tombstones 的路徑下就包含了so庫文件發生異常的Log信息,開發者可以查看該路徑下載Log文件發現異常調用的邏輯關系。
謝謝大家閱讀,如有幫助,來個喜歡或者關注吧!
本文作者:Anderson/Jerey_Jobs
總結
以上是生活随笔為你收集整理的android java 指针异常处理,Android程序员日常开发中异常总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sja1000 c语言,调试好的can(
- 下一篇: Android避坑指南,Gson与Kot