1. 程式人生 > >IO流(一)

IO流(一)

繼承 runt 編譯 和數 出了 概述 單獨使用 final 用處

一、異常

  概述

    異常就是Java程序在運行過程中出現的錯誤。

  由來

    問題也是現實生活中一個具體事務,也可以通過java的類的形式進行描述,並封裝成對象。其實就是Java對不正常情況進行描述後的對象體現。我們見過的異常,角標越界異常,空指針異常

  分類

          技術分享圖片

    1,編譯時異常
      除了RuntimeException及其子類,Exception中所有的子類都是編譯時異常,這種異常必須要處理,要不編譯通不過
    2,運行是異常
      RuntimeException及其子類都是,這種異常不用處理,編譯會通過,不過這樣的程序會有安全隱患,遇到這種異常是需要改代碼的


    3,嚴重錯誤問題
      用Error進行描述,這個問題發生後,一般不編寫針對代碼進行處理,而是要對程序進行修正.通常都是由虛擬機拋出的問題

  JVM的默認處理方案

    把異常的名稱,錯誤原因及異常出現的位置等信息輸出在了控制臺
    程序停止運行
    jvm發現運算是已經違反了數學運算規則,java將這種常見的問題進行描述,並封裝成了對象叫做ArithmeticException
    當除0運算發生後,jvm將該問題打包成了一個異常對象.
    並將對象拋給調用者main函數,new ArithmeticException("/by zero");
    main函數收到這個問題時,有兩種處理方式:


      1,自己將該問題處理,然後繼續運行
      2,自己沒有針對的處理方式,只有交給調用main的jvm來處理
    jvm有一個默認的異常處理機制,就將該異常進行處理.並將該異常的名稱,異常的信息.異常出現的位置打印在了控制臺上
    同時將程序停止運行

  異常處理方案

    try…catch…finally

      try…catch處理方式

      一個異常的情況
      多個異常的情況
      平級情況
      存在上下級的情況
      JDK7的新特性及註意事項

      Throwable中的方法

      getMessage()
        獲取異常信息,返回字符串。


      toString()
        獲取異常類名和異常信息,返回字符串。
      printStackTrace()
        獲取異常類名和異常信息,以及異常出現在程序中的位置。返回值void。
      printStackTrace(PrintStream s)
        通常用該方法將異常內容保存在日誌文件中,以便查閱。

      編譯時異常和運行時異常的區別

      Java中的異常被分為兩大類:編譯時異常和運行時異常。
      所有的RuntimeException類及其子類的實例被稱為運行時異常,其他的異常就是編譯時異常
      編譯時異常
        Java程序必須顯示處理,否則程序就會發生錯誤,無法通過編譯
      運行時異常
        無需顯示處理,也可以和編譯時異常一樣處理

      finally的特點作用

      finally的特點
        被finally控制的語句體一定會執行
        特殊情況:在執行到finally之前jvm退出了(比如System.exit(0))
      finally的作用
        用於釋放資源,在IO流操作和數據庫操作中會見到
      try…catch…finally可以使用
      try…catch也可以使用
      try…finally也可以使用
      但是,catch,finally不能單獨使用


    throws

      定義功能方法時,需要把出現的問題暴露出來讓調用者去處理。那麽就通過throws在方法上標識。


    throw

      在功能方法內部出現某種情況,程序不能繼續運行,需要進行跳轉時,就用throw把異常對象拋出。

    throws和throw的區別

      throws
        用在方法聲明後面,跟的是異常類名
        可以跟多個異常類名,用逗號隔開
        表示拋出異常,由該方法的調用者來處理
        throws表示出現異常的一種可能性,並不一定會發生這些異常
      throw
        用在方法體內,跟的是異常對象名
        只能拋出一個異常對象名
        表示拋出異常,由方法體內的語句處理
        throw則是拋出了異常,執行throw則一定拋出了某種異常

    處理異常

      原則:如果該功能內部可以將問題處理,用try,如果處理不了,交由調用者處理,這是用throws
      區別:
        後續程序需要繼續運行就try
        後續程序不需要繼續運行就throws

    自定義異常

      繼承自Exception
      繼承自RuntimeException

    異常註意事項

      子類重寫父類方法時,子類的方法必須拋出相同的異常或父類異常的子類。
      如果父類拋出了多個異常,子類重寫父類時,只能拋出相同的異常或者是他的子集,子類不能拋出父類沒有的異常
      如果被重寫的方法沒有異常拋出,那麽子類的方法絕對不可以拋出異常,如果子類方法內有異常發生,那麽子類只能try,不能throws

IO流(一)