精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
android常見異常總結(jié)

本文重在Java中異常機(jī)制的一些概念。寫本文的目的在于方便我很長時(shí)間后若是忘了這些東西可以通過這篇文章迅速回憶起來。
1. 異常機(jī)制
1.1 異常機(jī)制是指當(dāng)程序出現(xiàn)錯(cuò)誤后,程序如何處理。具體來說,異常機(jī)制提供了程序退出的安全通道。當(dāng)出現(xiàn)錯(cuò)誤后,程序執(zhí)行的流程發(fā)生改變,程序的控制權(quán)轉(zhuǎn)移到異常處理器。
1.2 傳統(tǒng)的處理異常的辦法是,函數(shù)返回一個(gè)特殊的結(jié)果來表示出現(xiàn)異常(通常這個(gè)特殊結(jié)果是大家約定俗稱的),調(diào)用該函數(shù)的程序負(fù)責(zé)檢查并分析函數(shù)返回的結(jié)果。這樣做有如下的弊端:例如函數(shù)返回-1代表出現(xiàn)異常,但是如果函數(shù)確實(shí)要返回-1這個(gè)正確的值時(shí)就會出現(xiàn)混淆;可讀性降低,將程序代碼與處理異常的代碼混爹在一起;由調(diào)用函數(shù)的程序來分析錯(cuò)誤,這就要求客戶程序員對庫函數(shù)有很深的了解。
1.3 異常處理的流程
1.3.1 遇到錯(cuò)誤,方法立即結(jié)束,并不返回一個(gè)值;同時(shí),拋出一個(gè)異常對象
1.3.2 調(diào)用該方法的程序也不會繼續(xù)執(zhí)行下去,而是搜索一個(gè)可以處理該異常的異常處理器,并執(zhí)行其中的代碼
2 異常的分類
2.1 異常的分類
2.1.1 異常的繼承結(jié)構(gòu):基類為Throwable,Error和Exception繼承Throwable,RuntimeException和IOException等繼承Exception,具體的RuntimeException繼承RuntimeException。
2.1.2 Error和RuntimeException及其子類成為未檢查異常(unchecked),其它異常成為已檢查異常(checked)。
2.2 每個(gè)類型的異常的特點(diǎn)
2.2.1 Error體系 Error類體系描述了Java運(yùn)行系統(tǒng)中的內(nèi)部錯(cuò)誤以及資源耗盡的情形。應(yīng)用程序不應(yīng)該拋出這種類型的對象(一般是由虛擬機(jī)拋出)。如果出現(xiàn)這種錯(cuò)誤,除了盡力使程序安全退出外,在其他方面是無能為力的。所以,在進(jìn)行程序設(shè)計(jì)時(shí),應(yīng)該更關(guān)注Exception體系。
2.2.2 Exception體系 Exception體系包括RuntimeException體系和其他非RuntimeException的體系
2.2.2.1 RuntimeException RuntimeException體系包括錯(cuò)誤的類型轉(zhuǎn)換、數(shù)組越界訪問和試圖訪問空指針等等。處理RuntimeException的原則是:如果出現(xiàn)RuntimeException,那么一定是程序員的錯(cuò)誤。例如,可以通過檢查數(shù)組下標(biāo)和數(shù)組邊界來避免數(shù)組越界訪問異常。
2.2.2.2 其他(IOException等等)這類異常一般是外部錯(cuò)誤,例如試圖從文件尾后讀取數(shù)據(jù)等,這并不是程序本身的錯(cuò)誤,而是在應(yīng)用環(huán)境中出現(xiàn)的外部錯(cuò)誤。
2.3 與C++異常分類的不同
2.3.1 其實(shí),Java中RuntimeException這個(gè)類名起的并不恰當(dāng),因?yàn)槿魏萎惓6际沁\(yùn)行時(shí)出現(xiàn)的。(在編譯時(shí)出現(xiàn)的錯(cuò)誤并不是異常,換句話說,異常就是為了解決程序運(yùn)行時(shí)出現(xiàn)的的錯(cuò)誤)。
2.3.2 C++中l(wèi)ogic_error與Java中的RuntimeException是等價(jià)的,而runtime_error與Java中非RuntimeException類型的異常是等價(jià)的。
3 異常的使用方法
3.1 聲明方法拋出異常
3.1.1 語法:throws(略)
3.1.2 為什么要聲明方法拋出異常?方法是否拋出異常與方法返回值的類型一樣重要。假設(shè)方法拋出異常確沒有聲明該方法將拋出異常,那么客戶程序員可以調(diào)用這個(gè)方法而且不用編寫處理異常的代碼。那么,一旦出現(xiàn)異常,那么這個(gè)異常就沒有合適的異常控制器來解決。
3.1.3 為什么拋出的異常一定是已檢查異常? RuntimeException與Error可以在任何代碼中產(chǎn)生,它們不需要由程序員顯示的拋出,一旦出現(xiàn)錯(cuò)誤,那么相應(yīng)的異常會被自動(dòng)拋出。而已檢查異常是由程序員拋出的,這分為兩種情況:客戶程序員調(diào)用會拋出異常的庫函數(shù)(庫函數(shù)的異常由庫程序員拋出);客戶程序員自己使用throw語句拋出異常。遇到Error,程序員一般是無能為力的;遇到RuntimeException,那么一定是程序存在邏輯錯(cuò)誤,要對程序進(jìn)行修改(相當(dāng)于調(diào)試的一種方法);只有已檢查異常才是程序員所關(guān)心的,程序應(yīng)該且僅應(yīng)該拋出或處理已檢查異常。
3.1.4 注意:覆蓋父類某方法的子類方法不能拋出比父類方法更多的異常,所以,有時(shí)設(shè)計(jì)父類的方法時(shí)會聲明拋出異常,但實(shí)際的實(shí)現(xiàn)方法的代碼卻并不拋出異常,這樣做的目的就是為了方便子類方法覆蓋父類方法時(shí)可以拋出異常。
3.2 如何拋出異常
3.2.1 語法:throw(略)
3.2.2 拋出什么異常?對于一個(gè)異常對象,真正有用的信息時(shí)異常的對象類型,而異常對象本身毫無意義。比如一個(gè)異常對象的類型是ClassCastException,那么這個(gè)類名就是唯一有用的信息。所以,在選擇拋出什么異常時(shí),最關(guān)鍵的就是選擇異常的類名能夠明確說明異常情況的類。
3.2.3 異常對象通常有兩種構(gòu)造函數(shù):一種是無參數(shù)的構(gòu)造函數(shù);另一種是帶一個(gè)字符串的構(gòu)造函數(shù),這個(gè)字符串將作為這個(gè)異常對象除了類型名以外的額外說明。
3.2.4 創(chuàng)建自己的異常:當(dāng)Java內(nèi)置的異常都不能明確的說明異常情況的時(shí)候,需要?jiǎng)?chuàng)建自己的異常。需要注意的是,唯一有用的就是類型名這個(gè)信息,所以不要在異常類的設(shè)計(jì)上花費(fèi)精力。
3.3 捕獲異常如果一個(gè)異常沒有被處理,那么,對于一個(gè)非圖形界面的程序而言,該程序會被中止并輸出異常信息;對于一個(gè)圖形界面程序,也會輸出異常的信息,但是程序并不中止,而是返回用戶界面處理循環(huán)中。
3.3.1 語法:try、catch和finally(略)控制器模塊必須緊接在try塊后面。若擲出一個(gè)異常,異常控制機(jī)制會搜尋參數(shù)與異常類型相符的第一個(gè)控制器隨后它會進(jìn)入那個(gè)catch 從句,并認(rèn)為異常已得到控制。一旦catch 從句結(jié)束對控制器的搜索也會停止。 3.3.1.1 捕獲多個(gè)異常(注意語法與捕獲的順序)(略)
3.3.1.2 finally的用法與異常處理流程(略)
3.3.2 異常處理做什么?對于Java來說,由于有了垃圾收集,所以異常處理并不需要回收內(nèi)存。但是依然有一些資源需要程序員來收集,比如文件、網(wǎng)絡(luò)連接和圖片等資源。
3.3.3 應(yīng)該聲明方法拋出異常還是在方法中捕獲異常?原則:捕捉并處理哪些知道如何處理的異常,而傳遞哪些不知道如何處理的異常
3.3.4 再次拋出異常
3.3.4.1 為什么要再次拋出異常?在本級中,只能處理一部分內(nèi)容,有些處理需要在更高一級的環(huán)境中完成,所以應(yīng)該再次拋出異常。這樣可以使每級的異常處理器處理它能夠處理的異常。
3.3.4.2 異常處理流程對應(yīng)與同一try塊的catch塊將被忽略,拋出的異常將進(jìn)入更高的一級。
4 關(guān)于異常的其他問題
4.1 過度使用異常首先,使用異常很方便,所以程序員一般不再愿意編寫處理錯(cuò)誤的代碼,而僅僅是簡簡單單的拋出一個(gè)異常。這樣做是不對的,對于完全已知的錯(cuò)誤,應(yīng)該編寫處理這種錯(cuò)誤的代碼,增加程序的魯棒性。另外,異常機(jī)制的效率很差。
4.2 將異常與普通錯(cuò)誤區(qū)分開對于普通的完全一致的錯(cuò)誤,應(yīng)該編寫處理這種錯(cuò)誤的代碼,增加程序的魯棒性。只有外部的不能確定和預(yù)知的運(yùn)行時(shí)錯(cuò)誤才需要使用異常。
4.3 異常對象中包含的信息一般情況下,異常對象唯一有用的信息就是類型信息。但使用異常帶字符串的構(gòu)造函數(shù)時(shí),這個(gè)字符串還可以作為額外的信息。調(diào)用異常對象的getMessage()、toString()或者printStackTrace()方法可以分別得到異常對象的額外信息、類名和調(diào)用堆棧的信息。并且后一種包含的信息是前一種的超集。

常用異常:

  UnsupportedOperationException不支持的操作

  IllegalArgumentException非法參數(shù)

  IndexOutOfBoundsException索引出界

  IllegalStateException非法狀態(tài)
異常跟普通的警告等有一定的區(qū)別。當(dāng)應(yīng)用程序發(fā)生異常時(shí),會中斷正在執(zhí)行的程序的正常指令流。也就是說,發(fā)生異常后面的代碼將得不到正確的執(zhí)行。甚至還會觸發(fā)數(shù)據(jù)庫的回退操作。

    在Java開發(fā)平臺中,異常包括預(yù)定義異常與自定義異常。這兩種異常的類型互為補(bǔ)充。作為一個(gè)合格的程序開發(fā)人員,要善于在應(yīng)用程序中使用異常。這可以提高應(yīng)用程序的交互性。同時(shí),也是保證應(yīng)用程序正常運(yùn)行的前提。故異常的處理對于開發(fā)一個(gè)優(yōu)秀的應(yīng)用程序來說非常的重要。為此筆者認(rèn)為程序開發(fā)人員應(yīng)該對Java應(yīng)用程序的常見異常有一個(gè)深入的了解。只有在了解這些常見異常的情況下,才能夠做好自定義異常的處理。

    一、常見異常的類型與原因。

    對于Java應(yīng)用程序的常見異常,筆者認(rèn)為程序開發(fā)人員要從兩個(gè)方面去了解。一是要知道有哪些常見的Java應(yīng)用程序異常,二是需要知道哪些原因可能會造成這個(gè)異常。這不僅需要程序管理人員在日常工作中要注意積累,在必要的情況下還需要去從其它渠道收集資料。筆者對此就進(jìn)行一個(gè)分析,希望能夠?qū)Ω魑怀绦蜷_發(fā)人員有一定的幫助。

    1、 SQLException:操作數(shù)據(jù)庫異常類。

    現(xiàn)在的Java應(yīng)用程序大部分都是依賴于數(shù)據(jù)庫運(yùn)行的。當(dāng)Java應(yīng)用程序與數(shù)據(jù)庫進(jìn)行溝通時(shí)如果產(chǎn)生了錯(cuò)誤,就會觸發(fā)這個(gè)類。同時(shí)會將數(shù)據(jù)庫的錯(cuò)誤信息通過這個(gè)類顯示給用戶。也就是說,這個(gè)操作數(shù)據(jù)庫異常類是數(shù)據(jù)庫與用戶之間異常信息傳遞的橋梁。如現(xiàn)在用戶往系統(tǒng)中插入數(shù)據(jù),而在數(shù)據(jù)庫中規(guī)定某個(gè)字段必須唯一。當(dāng)用戶插入數(shù)據(jù)的時(shí)候,如果這個(gè)字段的值跟現(xiàn)有的紀(jì)錄重復(fù)了,違反了數(shù)據(jù)庫的唯一性約束,此時(shí)數(shù)據(jù)庫就會跑出一個(gè)異常信息。這個(gè)信息一般用戶可能看不到,因?yàn)槠浒l(fā)生在數(shù)據(jù)庫層面的。此時(shí)這個(gè)操作數(shù)據(jù)庫異常類就會捕捉到數(shù)據(jù)庫的這個(gè)異常信息,并將這個(gè)異常信息傳遞到前臺。如此的話,前臺用戶就可以根據(jù)這個(gè)異常信息來分析發(fā)生錯(cuò)誤的原因。這就是這個(gè)操作數(shù)據(jù)庫異常類的主要用途。在Java應(yīng)用程序中,所有數(shù)據(jù)庫操作發(fā)生異常時(shí),都會觸發(fā)這一個(gè)類。所有此時(shí)Java應(yīng)用程序本身的提示信息往往過于籠統(tǒng),只是說與數(shù)據(jù)庫交互出現(xiàn)錯(cuò)誤,沒有多大的參考價(jià)值。此時(shí)反而是數(shù)據(jù)庫的提示信息更加有使用價(jià)值。

    2、 ClassCastException:數(shù)據(jù)類型轉(zhuǎn)換異常。

    在Java應(yīng)用程序中,有時(shí)候需要對數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換。這個(gè)轉(zhuǎn)換包括顯示的轉(zhuǎn)換與隱式的轉(zhuǎn)換。不過無論怎么轉(zhuǎn)換,都必須要符合一個(gè)前提的條件,即數(shù)據(jù)類型的兼容性。如果在數(shù)據(jù)轉(zhuǎn)換的過程中,違反了這個(gè)原則,那么就會觸發(fā)數(shù)據(jù)類型轉(zhuǎn)換異常。如現(xiàn)在在應(yīng)用程序中,開發(fā)人員需要將一個(gè)字符型的日期數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)庫所能夠接受的日期型數(shù)據(jù),此時(shí)只需要在前臺應(yīng)用程序中進(jìn)行控制,一般不會有問題。但是,如果前臺應(yīng)用程序缺乏相關(guān)的控制,如用戶在輸入日期的時(shí)候只輸入月、日信息,而沒有年份的信息。此時(shí)應(yīng)用程序在進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換的時(shí)候,就會出現(xiàn)異常。根據(jù)筆者的經(jīng)驗(yàn),數(shù)據(jù)類型轉(zhuǎn)換異常在應(yīng)用程序開發(fā)中使一個(gè)出現(xiàn)的比較多的異常,也是一個(gè)比較低級的異常。因?yàn)榇蟛糠智闆r下,都可以在應(yīng)用程序窗口中對數(shù)據(jù)類型進(jìn)行一些強(qiáng)制的控制。即在數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換之前,就保證數(shù)據(jù)類型的兼容性。如此的話,就不容易造成數(shù)據(jù)類型的轉(zhuǎn)換異常。如在只允許數(shù)值類型的字段中,可以設(shè)置不允許用戶輸入數(shù)值以外的字符。雖然說有了異常處理機(jī)制,可以保證應(yīng)用程序不會被錯(cuò)誤的運(yùn)行。但是在實(shí)際開發(fā)中,還是要盡可能多的預(yù)見錯(cuò)誤發(fā)生的原因,盡量避免異常的發(fā)生。

    3、 NumberFormatException:字符串轉(zhuǎn)換為數(shù)字類型時(shí)拋出的異常。

    在數(shù)據(jù)類型轉(zhuǎn)換過程中,如果是字符型轉(zhuǎn)換為數(shù)字型過程中出現(xiàn)的問題,對于這個(gè)異常在Java程序中采用了一個(gè)獨(dú)立的異常,即NumberFormatException.如現(xiàn)在講字符型的數(shù)據(jù)“123456”轉(zhuǎn)換為數(shù)值型數(shù)據(jù)時(shí),是允許的。但是如果字符型數(shù)據(jù)中包含了非數(shù)字型的字符,如123#56,此時(shí)轉(zhuǎn)換為數(shù)值型時(shí)就會出現(xiàn)異常。系統(tǒng)就會捕捉到這個(gè)異常,并進(jìn)行處理。

Java應(yīng)用程序中常見的異常類還有很多。如未找到相應(yīng)類異常、不允許訪問某些類異常、文件已經(jīng)結(jié)束異常、文件未找到異常、字段未找到異常等等。一般系統(tǒng)開發(fā)人員都可以根據(jù)這個(gè)異常名來判斷當(dāng)前異常的類型。雖然不錯(cuò),但是好記性不如爛筆頭。程序開發(fā)人員在必要的時(shí)候(特別是存在自定義異常的時(shí)候),最后手頭有一份異常明細(xì)表。如此的話,無論是應(yīng)用程序在調(diào)試過程中發(fā)現(xiàn)問題,還是運(yùn)行過程中接到用戶的投訴,都可以及時(shí)的根據(jù)異常名字來找到異常發(fā)生的原因。從而可以在最短時(shí)間內(nèi)解決異常,恢復(fù)應(yīng)用程序的正常運(yùn)行。這個(gè)措施筆者用了很多年,非常的有效。

    二、異常管理的實(shí)用建議。

    對于操作數(shù)據(jù)庫異常來說,Java應(yīng)用程序只提供了一個(gè)異常類。故光憑Java應(yīng)用程序的錯(cuò)誤信息,往往不能夠幫助應(yīng)用程序人員排除錯(cuò)誤的原因。只能夠指名是應(yīng)用程序錯(cuò)誤還是數(shù)據(jù)庫錯(cuò)誤導(dǎo)致的這個(gè)異常。為了更進(jìn)一步指明問題的原因,在數(shù)據(jù)庫層面定義異常的時(shí)候,最好能夠說明具體的原因。如前臺應(yīng)用程序可能會調(diào)用數(shù)據(jù)庫的函數(shù)或者過程。此時(shí)在數(shù)據(jù)庫的函數(shù)或者過程中做好能夠說明某個(gè)異常的具體原因。如根據(jù)某個(gè)基礎(chǔ)表生成另一張表的時(shí)候,某個(gè)字段不能夠?yàn)榭盏鹊取⑦@些異常信息說明清楚后,如果真的遇到類似的異常時(shí),操作數(shù)據(jù)庫異常類就會將數(shù)據(jù)庫的異常信息反會給前臺用戶。從而有利于用戶尋找問題的原因,并在最短時(shí)間內(nèi)改正。當(dāng)然,這需要Java程序員與數(shù)據(jù)庫設(shè)計(jì)人員進(jìn)行協(xié)調(diào)。

    其次需要注意的是,異常并不是常態(tài)。也就是說,大部分異常可以通過前提的合理預(yù)見與預(yù)防,來消除。如設(shè)計(jì)到四則運(yùn)算,可以在前臺應(yīng)用程序窗口中限制在除數(shù)字段內(nèi)輸入0值等手段來消除應(yīng)用程序運(yùn)行中可能產(chǎn)生的異常。不過這往往要求應(yīng)用程序開發(fā)人員有比較豐富的工作經(jīng)驗(yàn)以及由比較嚴(yán)密的思維邏輯。雖然這有一定的難度,但是筆者認(rèn)為程序開發(fā)人員還是應(yīng)該往這方面努力,而不要老是讓用戶作為你的試驗(yàn)品,讓用戶來發(fā)現(xiàn)應(yīng)用程序中的設(shè)計(jì)Bug.筆者認(rèn)為,只有一些實(shí)在是程序人員無法控制的因素才允許拋出異常。如果應(yīng)用程序開發(fā)人員能夠意識到這種錯(cuò)誤、但是仍然沒有引起重視或者采取有效的措施防止出現(xiàn)這種異常,那么筆者是不允許的。



ArithmeticException(除數(shù)為0的異常), BufferOverflowException(緩沖區(qū)上溢異常), BufferUnderflowException(緩沖區(qū)下溢異常), IndexOutOfBoundsException(出界異常), NullPointerException(空指針異常), EmptyStackException(空棧異常), IllegalArgumentException(不合法的參數(shù)異常), NegativeArraySizeException, NoSuchElementException, SecurityException, SystemException, UndeclaredThrowableException

1. java.lang.NullPointerException
  異常的解釋是"程序遇上了空指針",簡單地說就是調(diào)用了未經(jīng)初始化的對象或者是不存在的對象,即把數(shù)組的初始化和數(shù)組元素的初始化混淆起來了。數(shù)組的初始化是對數(shù)組分配需要的空間,而初始化后的數(shù)組,其中的元素并沒有實(shí)例化,依然是空的,所以還需要對每個(gè)元素都進(jìn)行初始化(如果要調(diào)用的話)
  2. java.lang.ClassNotFoundException  異常的解釋是"指定的類不存在"。
  3. java.lang.ArithmeticException  這個(gè)異常的解釋是"數(shù)學(xué)運(yùn)算異常",比如程序中出現(xiàn)了除以零這樣的運(yùn)算就會出這樣的異常。
  4. java.lang.ArrayIndexOutOfBoundsException
  異常的解釋是"數(shù)組下標(biāo)越界",現(xiàn)在程序中大多都有對數(shù)組的操作,因此在調(diào)用數(shù)組的時(shí)候一定要認(rèn)真檢查,看自己調(diào)用的下標(biāo)是不是超出了數(shù)組的范圍,一般來說,顯示(即直接用常數(shù)當(dāng)下標(biāo))調(diào)用不太容易出這樣的錯(cuò),但隱式(即用變量表示下標(biāo))調(diào)用就經(jīng)常出錯(cuò)了,還有一種情況,是程序中定義的數(shù)組的長度是通過某些特定方法決定的,不是事先聲明的,這個(gè)時(shí)候,最好先查看一下數(shù)組的length,以免出現(xiàn)這個(gè)異常。
  5. java.lang.IllegalArgumentException
  這個(gè)異常的解釋是"方法的參數(shù)錯(cuò)誤",比如g.setColor(int red,int green,int blue)這個(gè)方法中的三個(gè)值,如果有超過255的也會出現(xiàn)這個(gè)異常,因此一旦發(fā)現(xiàn)這個(gè)異常,我們要做的,就是趕緊去檢查一下方法調(diào)用中的參數(shù)傳遞是不是出現(xiàn)了錯(cuò)誤。
  6. java.lang.IllegalAccessException
  這個(gè)異常的解釋是"沒有訪問權(quán)限",當(dāng)應(yīng)用程序要調(diào)用一個(gè)類,但當(dāng)前的方法即沒有對該類的訪問權(quán)限便會出現(xiàn)這個(gè)異常。對程序中用了Package的情況下要注意這個(gè)異常

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
android中常見異常總結(jié)
詳解Java中異常處理機(jī)制
Java異常的分類
Java異常
異常問題匯總
異常
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 瑞昌市| 根河市| 万年县| 金昌市| 陈巴尔虎旗| 合作市| 云浮市| 长岭县| 甘德县| 射阳县| 新兴县| 九龙县| 旅游| 上犹县| 阿勒泰市| 垫江县| 报价| 尚志市| 海阳市| 衢州市| 固始县| 灵台县| 陵水| 手游| 延川县| 延庆县| 磐石市| 巩义市| 鹤峰县| 永仁县| 阿坝县| 巴中市| 汕尾市| 冕宁县| 新余市| 武强县| 牙克石市| 台州市| 育儿| 日土县| 简阳市|