日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

android java 指针异常处理,Android程序员日常开发中异常总结

發(fā)布時(shí)間:2024/3/12 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android java 指针异常处理,Android程序员日常开发中异常总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

CaptainAndroid.png

Java異常

平時(shí)開發(fā)中遇到的java異常很多,因?yàn)橐鹪蛞荒苛巳?#xff0c;當(dāng)然也有不好解決的,比如一個(gè)簡(jiǎn)單的空指針異常你可能始終無法找到其為空的原因,甚至使用前還做了空判斷。也有可能一個(gè)類型強(qiáng)制轉(zhuǎn)換異常被報(bào)了出來可是你始終無法找到為什么出錯(cuò)的原因。偶先幾率極低,只能catch的來了事。

NullPointerException空指針引用異常

ClassCastException 類型強(qiáng)制轉(zhuǎn)換異常

IllegalArgumentException 傳遞非法參數(shù)異常

ArithmeticException 算術(shù)運(yùn)算異常

ArrayStoreException 向數(shù)組中存放與聲明類型不兼容對(duì)象異常

IndexOutOfBoundsException 下標(biāo)越界異常

NegativeArraySizeException 創(chuàng)建一個(gè)大小為負(fù)數(shù)的數(shù)組錯(cuò)誤異常

umberFormatException 數(shù)字格式異常

SecurityException 安全異常

10.UnsupportedOperationException 不支持的操作異常

CSDN上更多的java異常

Android自身特性異常

java.lang.NullPointerException

異常原因:另一種情況使用fragment時(shí),fragment相關(guān)布局,必須給每個(gè)view設(shè)置id,否則通過activity獲得fragment的實(shí)例時(shí)會(huì)出現(xiàn)以上異常

解決方法:為fragment布局的每個(gè)view設(shè)置ID

Android中引入第三方Jar包的方法(Java.lang.NoClassDefFoundError解決辦法)

1、在工程下新建lib文件夾,將需要的第三方包拷貝進(jìn)來。

2、將引用的第三方包,添加進(jìn)工作的build path。選中jar包->Build Path

3、(關(guān)鍵的一步)將lib設(shè)為源文件夾。如果不設(shè)置,則程序編譯可以通過,但運(yùn)行的時(shí)候,會(huì)報(bào):選中l(wèi)ib文件夾->source code

java.lang.NoClassDefFoundError

Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解決辦法)

Caused by: android.os.TransactionTooLargeException

導(dǎo)致原因是:Binder傳輸?shù)臄?shù)據(jù)太大

如果Binder的參數(shù)或返回值太大,不適合的事務(wù)緩沖區(qū),然后調(diào)用將失敗,并將被拋出TransactionTooLargeException。

解決方法:

不要將大量數(shù)據(jù)傳入Binder

android.database.CursorWindowAllocationException:Cursor window allocation of 2048 kb failed

導(dǎo)致原因:主要原因是因?yàn)槭褂昧薙impleCursorAdapter類,其中的Cursor參數(shù)需要我們手動(dòng)關(guān)閉,否則就會(huì)出現(xiàn)以上異常。

解決方法:cursor.close()

Excessive JNI global references錯(cuò)誤的解決方案 GREF暴增

導(dǎo)致原因:vm對(duì)jni層的reference有個(gè)數(shù)限制,過多很造成VM aborting。因此每次在GREF增加到2000以上的時(shí)候就直接aborting了

解決方法:及時(shí)回收或關(guān)閉引用

android.view.WindowManager$BadTokenException: Unable to add window -- token

導(dǎo)致原因:使用getApplicationContext()獲得的Context,而必須使用Activity,因?yàn)橹挥幸粋€(gè)Activity才能添加一個(gè)窗體。

解決方法:采用當(dāng)前Activity的Context

android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file

導(dǎo)致原因:重復(fù)安裝軟件,導(dǎo)致Sqlite3打開數(shù)據(jù)庫(kù)異常

解決方法:卸載相應(yīng)軟件,開關(guān)機(jī),重新安裝該軟件,即可以解決相關(guān)異常。

java.util.ConcurrentModificationException(并發(fā)操作異常)

異常原因:ArrayList是非線程安全的,當(dāng)同時(shí)在遍歷和修改ArrayList時(shí),就會(huì)出現(xiàn)該異常

解決方法:使用Vector替換ArrayList,Vector是線程安全的。Vector的缺點(diǎn):大量數(shù)據(jù)操作時(shí),由于線程安全,性能比ArrayList低

so庫(kù)文件異常(JNI層異常)

異常原因:在Android應(yīng)用層開發(fā)中,我們經(jīng)常會(huì)使用so庫(kù)文件。當(dāng)so庫(kù)文件發(fā)生異常時(shí),我們只能在adb log中發(fā)現(xiàn)fatal libc這樣的異常信息,僅此而已,并不能發(fā)現(xiàn)異常調(diào)用的邏輯關(guān)系, 這是我們就需要查看so 庫(kù)異常Log信息。在Android手機(jī)的/data/tombstones 的路徑下就包含了so庫(kù)文件發(fā)生異常的Log信息,開發(fā)者可以查看該路徑下載Log文件發(fā)現(xiàn)異常調(diào)用的邏輯關(guān)系。

謝謝大家閱讀,如有幫助,來個(gè)喜歡或者關(guān)注吧!

本文作者:Anderson/Jerey_Jobs

總結(jié)

以上是生活随笔為你收集整理的android java 指针异常处理,Android程序员日常开发中异常总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。