* 處理異常的第二種方式:捕捉 try{}catch(){}
*
* 語法:
* try{
* 可能出現異常的代碼;
* }
* catch(異常類型1 變量){
* 處理異常的代碼;
* }
* catch(異常類型2 變量){
* 處理異常的代碼;
* }......
*
* 1.catch語句塊可以寫多個
*
* 2.但是從上到下catch,必須從小類型異常到大類型異常進行捕捉
*
* 3.try...catch..中最多執行1個catch語句塊,執行結束之後try...catch就結束了
*
package com.lbj.javase24;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
* 處理異常的第二種方式:捕捉 try{}catch(){}
*
* 語法:
* try{
* 可能出現異常的代碼;
* }
* catch(異常類型1 變量){
* 處理異常的代碼;
* }
* catch(異常類型2 變量){
* 處理異常的代碼;
* }......
*
* 1.catch語句塊可以寫多個
*
* 2.但是從上到下catch,必須從小類型異常到大類型異常進行捕捉
*
* 3.try...catch..中最多執行1個catch語句塊,執行結束之後try...catch就結束了
*
*
*
* @author 14811
*
*/
public class ExceptionTest04 {
public static void main(String[] args){
try{
//程序執行到此處發生了FileNotFoundException類型的
//JVM會自動創建一個FileNotFoundException類型的對象,將該對象的內存地址賦值給catch語句塊中的e變量
FileInputStream fis=new FileInputStream("c:/ab.txt");
//上面的代碼出現了異常,try語句塊的代碼不再執行,直接進入catch語句塊中執行,然後只執行一條catch語句然後跳出
System.out.println("測試是否存在異常後還是輸出下面的fis內容");
fis.read();
}
catch(FileNotFoundException e){
System.out.println("讀取文件不存在");
//這時候會輸出這麼一段話
/*
* 讀取文件不存在
java.io.FileNotFoundException: c:\ab.txt (系統找不到指定的文件。)
爲什麼會有這句話呢,按道理來說e保存的不應該是內存地址嗎,輸出e的時候應該是一串字符纔對,爲什麼呢?原因是
FileNotFoundException重寫了e的toString方法,輸出的提示內容是SUN公司規定的內容
e的內存地址指向堆中的那個對象是"FileNotFoundException類型的"事件
*/
System.out.println(e.toString());//默認調用的是e.toString(),但是隻寫e的時候,也是一樣的意思
}
catch(IOException e){}//注意,由於異常處理有先後要求,小的在前,大的在後,這裏的順序不能調換,IOException是大類型
}
}