六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

JAVA圖文說明教程 第4講 Java的例外處理與I/O流(一)

[摘要]4.1 什么是例外   例外就是在程序的運行過程中所發生的異常事件,它中斷指令的正常執行。Java中提供了一種獨特的處理例外的機制,通過例外來處理程序設計中出現的錯誤。   4.1.1 例外示例   【例4-1】      import java.io.*;      class Exceptio...
4.1 什么是例外

  例外就是在程序的運行過程中所發生的異常事件,它中斷指令的正常執行。Java中提供了一種獨特的處理例外的機制,通過例外來處理程序設計中出現的錯誤。

  4.1.1 例外示例

  【例4-1】

     import java.io.*;
     class ExceptionDemo1{
      public static void main( String args[ ] ){
       FileInputStream fis = new FileInputStream( "text" );
       int b;
       while( (b=fis.read())!=-1 ){
        System.out.print( b );
       }
       fis.close( );
      }
     }

    查看編譯結果

  【例4-2】

     class ExceptionDemo2{
      public static void main( String args[ ] ){
       int a = 0;
       System.out.println( 5/a );
      }
     }

    運行結果

  C:\>javac ExceptionDemo2.java
  C:\>java ExceptionDemo2
  java.lang.ArithmeticException: / by zero at
  ExceptionDemo2.main(ExceptionDemo2.java:4)

   因為除數不能為0,所以在程序運行的時候出現了除0溢出的異常事件。為什么有的例外在編譯時出現,而有的例外是在運行時出現的?讓我們繼續學習java 的例外處理機制。


  4.1.2 例外處理機制

  拋棄(throw)例外:
  在Java程序的執行過程中,如果出現了異常事件,就會生成一個例外對象。生成的例外對象將傳遞給Java運行時系統,這一例外的產生和提交過程稱為拋棄(throw)例外

  兩種處理例外的機制:

  ◇ 捕獲例外:
  當Java運行時系統得到一個例外對象時,它將會沿著方法的調用棧逐層回溯,尋找處理這一例外的代碼。找到能夠處理這種類型的例外的方法后,運行時系統把當前例外對象交給這個方法進行處理,這一過程稱為捕獲(catch)例外。這是積極的例外處理機制。如果Java運行時系統找不到可以捕獲例外的方法,則運行時系統將終止,相應的Java程序也將退出。

  ◇ 聲明拋棄例外:
  如果一個方法并不知道如何處理所出現的例外,則可在方法聲明時,聲明拋棄(throws)例外。這是一種消極的例外處理機制。

  4.1.3 例外類的層次

  在jdk中,每個包中都定義了例外類,而所有的例外類都直接或間接地繼承于Throwable類。圖4-1為jdk中例外類的繼承關系。

  java中的例外類可分為兩大類:

  Error
  
  動態鏈接失敗,虛擬機錯誤等,通常Java程序不應該捕獲這類例外,也不會拋棄這種例外。

  Exception
  
  1)運行時例外:
  繼承于RuntimeException的類都屬于運行時例外,例如算術例外(除零錯)、數組下標越界例外等等。由于這些例外產生的位置是未知的,Java 編譯器允許程序員在程序中不對它們做出處理。

  2)非運行時例外:
  除了運行時例外之外的其他由Exception 繼承來的例外類都是非運行時的例外,例如FileNotFoundException(文件未找到例外)。Java編譯器要求在程序中必須處理這種例外,捕獲例外或者聲明拋棄例外。

  4.2 例外的處理

  java語言中有兩種例外處理機制:捕獲例外和聲明拋棄例外。下面我們做詳細介紹。

  4.2.1 捕獲例外

  捕獲例外是通過try-catch-finally語句實現的。

  try{
  ......
   }catch( ExceptionName1 e ){
   ......
   }catch( ExceptionName2 e ){
   ......
   }
   ......
   }finally{
   ......
  }

  ◇ try

  捕獲例外的第一步是用try{…}選定捕獲例外的范圍,由try所限定的代碼塊中的語句在執行過程中可能會生成例外對象并拋棄。

  ◇ catch

  每個try代碼塊可以伴隨一個或多個catch語句,用于處理try代碼塊中所生成的例外事件。catch語句只需要一個形式參數指明它所能夠捕獲的例外類型,這個類必須是Throwable的子類,運行時系統通過參數值把被拋棄的例外對象傳遞給catch塊。

  在catch塊中是對例外對象進行處理的代碼,與訪問其它對象一樣,可以訪問一個例外對象的變量或調用它的方法。getMessage( )是類Throwable所提供的方法,用來得到有關異常事件的信息,類Throwable還提供了方法printStackTrace( )用來跟蹤異常事件發生時執行堆棧的內容。例如:

  try{
    ......
   }catch( FileNotFoundException e ){
    System.out.println( e );
    System.out.println( "message: "+e.getMessage() );
    e.printStackTrace( System.out );
   }catch( IOException e ){
    System.out.println( e );
   }

  catch 語句的順序:
  捕獲例外的順序和catch語句的順序有關,當捕獲到一個例外時,剩下的catch語句就不再進行匹配。因此,在安排catch語句的順序時,首先應該捕獲最特殊的例外,然后再逐漸一般化。也就是一般先安排子類,再安排父類。

  ◇ finally

  捕獲例外的最后一步是通過finally語句為例外處理提供一個統一的出口,使得在控制流轉到程序的其它部分以前,能夠對程序的狀態作統一的管理。不論在try代碼塊中是否發生了異常事件,finally塊中的語句都會被執行。

  4.2.2 聲明拋棄例外

  1.聲明拋棄例外

  如果在一個方法中生成了一個例外,但是這一方法并不確切地知道該如何對這一異常事件進行處理,這時,一個方法就應該聲明拋棄例外,使得例外對象可以從調用棧向后傳播,直到有合適的方法捕獲它為止。

  聲明拋棄例外是在一個方法聲明中的throws子句中指明的。例如:

  public int read () throws IOException{
        ......
  }

  throws子句中同時可以指明多個例外,之間由逗號隔開。例如:

  public static void main(String args[]) throws
  IOException,IndexOutOfBoundsException {…}




主站蜘蛛池模板: 色噜噜狠狠大色综合 | 天堂v | 亚洲 日本 欧美 日韩精品 | 日韩视频精品在线 | 一个色综合网 | 最新在线观看精品国产福利片 | 日本免费专区 | 最好韩国日本高清 | 亚洲a视频在线观看 | 日本最新中文字幕 | 色国产精品一区在线观看 | 在线观看亚洲免费视频 | 在线精品免费观看综合 | 欧美丝袜一区 | 日韩美女视频在线 | 欧美视频精品在线观看 | 手机看片自拍日韩日韩高清 | 日本在线日本中文字幕日本在线视频播放 | 日韩在线视频免费 | 亚洲人成网站色7799在线播放 | 日本黄色动态图 | 夜夜逼 | 日本免费三片在线播放 | 手机看片福利日韩 | 亚洲成av人片在线观看天堂无码 | 午夜精品久视频在线观看 | 日日摸狠狠的摸夜夜摸 | 日本中文字幕在线视频站 | 亚洲日本视频 | 最新天堂网| 最新高清无码专区 | 天天色综合影视 | 桃花岛在线播放免费观看 | 日日噜噜噜夜夜爽爽狠狠 | 先锋资源亚洲 | 五月婷婷视频在线观看 | 色婷婷一区二区三区四区成人网 | 色狠狠一区 | 日本国产视频 | 日本h在线 | 四虎 2022 永久网站 |