異常

/**

  • 異常(Exception)處理:程序運行期間的錯誤,如果程序發(fā)生異常那么程序會終止擎厢,不會執(zhí)行其他代碼
  • 所有異常的根父類:Throwable 子類: Exception Erro
  • 檢查性異常(checked exception)
    ? 若系統(tǒng)運行時可能產生該類異常朵夏,則必須寫出相應的處理代碼蔼啦,
    否則無法通過編譯
    ? 非RuntimeException異常
    ? 非檢查性異常(unchecked exception)
    ? 若系統(tǒng)運行時可能產生該類異常,則不必在程序中聲明對該類
    異常的處理仰猖,就可以編譯執(zhí)行
    ? RuntimeException:運行時異常
    java中如何處理異常
    1.自行處理 語法:try.....catch
    2.回避異常 throws表示異常的聲明, 說明此方法有可能出現異常
    語法:public返回值類型 方法名() throws 異常類型{}
  • 先處理小異常后處理大異常
  • throw與throws的區(qū)別
  • 1.人為的拋出異常捏肢,那么這個異常需要自己創(chuàng)建
  • 2.throws異常的聲明,表示某個方法中有可能會出現異常饥侵,但在該方法中不處理(try.....catch)鸵赫,誰調用誰去處理
    自定義異常:用Exception
    final和finally的區(qū)別
    finally是try catch中的關鍵字
    /**
  • final(最終的):修飾變量、方法躏升、類
  • 1.final修飾類:表示這個類是不能被繼承的
  • 2.final修改方法:表示這個方法不能被重寫(覆蓋)的
  • 3.final修飾變量:表示這是一個常量(只被賦值一次) 靜態(tài)常量:public static final 常量名一般都是大寫的
  • @author Administrator

*/

  • @author Administrator

*/

有return try catch finally的執(zhí)行順序
<pre class="js_message_plain ng-binding" ng-bind-html="message.MMActualContent" style="margin: 0px; font-family: inherit; font-size: inherit; white-space: pre-wrap; word-break: normal;">辩棒、不管有沒有出現異常,finally塊中代碼都會執(zhí)行膨疏;
2一睁、當try和catch中有return時,finally仍然會執(zhí)行佃却;
3者吁、finally是在return后面的表達式運算后執(zhí)行的(此時并沒有返回運算后的值,而是先把要返回的值保存起來饲帅,不管finally中的代碼怎么樣砚偶,返回的值都不會改變,任然是之前保存的值)洒闸,所以函數返回值是在finally執(zhí)行前確定的;
4均芽、finally中最好不要包含return丘逸,否則程序會提前退出,返回值不是try或catch中保存的返回值掀宋。
舉例:
情況1:try{} catch(){}finally{} return;
顯然程序按順序執(zhí)行深纲。
情況2:try{ return; }catch(){} finally{} return;
程序執(zhí)行try塊中return之前(包括return語句中的表達式運算)代碼;
再執(zhí)行finally塊劲妙,最后執(zhí)行try中return;
finally塊之后的語句return湃鹊,因為程序在try中已經return所以不再執(zhí)行。
情況3:try{ } catch(){return;} finally{} return;
程序先執(zhí)行try镣奋,如果遇到異常執(zhí)行catch塊币呵,
有異常:則執(zhí)行catch中return之前(包括return語句中的表達式運算)代碼,再執(zhí)行finally語句中全部代碼侨颈,
最后執(zhí)行catch塊中return. finally之后也就是4處的代碼不再執(zhí)行余赢。
無異常:執(zhí)行完try再finally再return.
情況4:try{ return; }catch(){} finally{return;}
程序執(zhí)行try塊中return之前(包括return語句中的表達式運算)代碼芯义;
再執(zhí)行finally塊,因為finally塊中有return所以提前退出妻柒。
情況5:try{} catch(){return;}finally{return;}
程序執(zhí)行catch塊中return之前(包括return語句中的表達式運算)代碼扛拨;
再執(zhí)行finally塊,因為finally塊中有return所以提前退出举塔。
情況6:try{ return;}catch(){return;} finally{return;}
程序執(zhí)行try塊中return之前(包括return語句中的表達式運算)代碼绑警;
有異常:執(zhí)行catch塊中return之前(包括return語句中的表達式運算)代碼;
則再執(zhí)行finally塊央渣,因為finally塊中有return所以提前退出计盒。
無異常:則再執(zhí)行finally塊,因為finally塊中有return所以提前退出痹屹。

最終結論:任何執(zhí)行try 或者catch中的return語句之前章郁,都會先執(zhí)行finally語句,如果finally存在的話志衍。
如果finally中有return語句暖庄,那么程序就return了,所以finally中的return是一定會被return的楼肪,
編譯器把finally中的return實現為一個warning培廓。

下面是個測試程序
public class FinallyTest
{
public static void main(String[] args) {

 [System.out.println(new](https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxcheckurl?requrl=http%3A%2F%2FSystem.out.println(new&skey=%40crypt_b6c9ed12_a552344a3d3e6a202881fe7797021bb3&deviceid=e022228226527146&pass_ticket=undefined&opcode=2&scene=1&username=@22a6407b624c1a953fc178e91347993461fc58e285ef4cfd65403f2aad9d1477) FinallyTest().test());;
}

static int test()
{
    int x = 1;
    try
    {
        x++;
        return x;
    }
    finally
    {
        ++x;
    }
}

}
結果是2。
在try語句中春叫,在執(zhí)行return語句時肩钠,要返回的結果已經準備好了,就在此時暂殖,程序轉到finally執(zhí)行了价匠。
在轉去之前,try中先把要返回的結果存放到不同于x的局部變量中去呛每,執(zhí)行完finally之后踩窖,在從中取出返回結果,
因此晨横,即使finally中對變量x進行了改變洋腮,但是不會影響返回結果。
它應該使用棧保存返回值手形。</pre>

[](javascript:; "表情") [](javascript:; "截屏") [<input type="file" name="file" class="webuploader-element-invisible" multiple="multiple" style="outline: 0px; padding: 0px; font-family: inherit; font-size: 16px; margin: 0px; position: absolute; clip: rect(1px, 1px, 1px, 1px); orphans: 2; white-space: normal; widows: 2; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">](javascript:; "圖片和文件")

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末啥供,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子库糠,更是在濱河造成了極大的恐慌伙狐,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異鳞骤,居然都是意外死亡窒百,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門豫尽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篙梢,“玉大人,你說我怎么就攤上這事美旧〔持停” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵榴嗅,是天一觀的道長妄呕。 經常有香客問我,道長嗽测,這世上最難降的妖魔是什么绪励? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮唠粥,結果婚禮上疏魏,老公的妹妹穿的比我還像新娘。我一直安慰自己晤愧,他們只是感情好大莫,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著官份,像睡著了一般只厘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舅巷,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天羔味,我揣著相機與錄音,去河邊找鬼钠右。 笑死赋元,一個胖子當著我的面吹牛,可吹牛的內容都是我干的爬舰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼寒瓦,長吁一口氣:“原來是場噩夢啊……” “哼情屹!你這毒婦竟也來了?” 一聲冷哼從身側響起杂腰,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤垃你,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體惜颇,經...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡皆刺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了凌摄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羡蛾。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锨亏,靈堂內的尸體忽然破棺而出痴怨,到底是詐尸還是另有隱情,我是刑警寧澤器予,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布浪藻,位于F島的核電站,受9級特大地震影響乾翔,放射性物質發(fā)生泄漏爱葵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一反浓、第九天 我趴在偏房一處隱蔽的房頂上張望萌丈。 院中可真熱鬧,春花似錦勾习、人聲如沸浓瞪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乾颁。三九已至,卻和暖如春艺栈,著一層夾襖步出監(jiān)牢的瞬間英岭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工湿右, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留诅妹,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓毅人,卻偏偏與公主長得像吭狡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丈莺,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內容

  • 異常分類 Java將異常分為兩種划煮,Checked異常和Runtime異常。Java認為Checked異常都是可以在...
    LLorenzo閱讀 705評論 0 1
  • 本文收錄于 kotlin入門潛修專題系列缔俄,歡迎學習交流弛秋。 創(chuàng)作不易器躏,如有轉載,還請備注蟹略。 java中異常 很多語言...
    寒瀟2018閱讀 756評論 0 2
  • 目錄:一登失、 異常繼承體系二、 發(fā)生異常到時候挖炬,程序的執(zhí)行特征:三揽浙、 異常與錯誤的區(qū)別四、 拋出異常 throw五茅茂、...
    千面嬌你妹的娃閱讀 371評論 1 2
  • 又到秋來八月八捏萍, 青蔥如煙念芳華, 何來酒香人方醉空闲, 春風做伴好還家令杈。
    逍遙的城閱讀 327評論 1 1
  • 戰(zhàn)略大于組織,在領導團隊的時候碴倾,一定要有戰(zhàn)略……例如業(yè)績是員工最好的激勵逗噩,實惠是對顧客最好的吸引。只有講究策略才能...
    臨淄茂業(yè)DDM王春梅閱讀 109評論 0 0