1. 程式人生 > 實用技巧 >2020.7.27

2020.7.27

一、今日學習內容

1、在java中如何進行異常處理:java異常處理的方法一般有兩種,分別是使用try…catch…finally…和throws來操作。

(1)Try…catch…finally…

通過使用Try…catch…finally….語句處理異常,它捕獲被命名為屬於異常類的異常,並呼叫方法處理它。其中,finally無論有無異常都會執行。

Try...catch異常處理程式碼塊的基本形式如下:

try   //監視
    {
     可能發生異常的程式碼塊;
     }
    
catch (異常型別 異常物件名) / /捕獲並處理異常 { 異常處理程式碼塊; } finally{ / /最終執行 }

示例:使用Try…catch…finally…

public class TryCatchFinally{
      public static void main (String[] args) {
          try{
                 int x=5;
                 
int y=x/0; System. out.println(y) ; }catch (Exception e) { e.printstackTrace() ; //將錯誤列印到堆疊 } finally{ System. out.println("Over!") ; } } }

整數是不可以除以0的,因為這句程式碼會出現異常,所以用try…catch…finally…捕獲它

結果:

示例:

public class TryReturn {
       public static void main (String[] args) {
              TryReturn t=new TryReturn() ;
              int x =t.get();
              System. out.printin("x="+x);
       }
       public int get() {
           int x=0;
           try{
                   x=5;
                   return x;
            } catch (Exception e) (
                 e.printStackTrace() ;
            }finally{
                x=10;
                 return x;
            }
       }
}

輸出結果:x=10

如果將finally去掉,輸出結果是x=5;從該結果可以看出,貌似finally沒有執行一樣,其實finally的語句是執行的,只不過方法是return 一個值,只不過是從try語句中返回的。其中finally可以省略。

catch語句可以有多個,並且如果使用者要捕獲Exception,則將Exception放在最後,不能放在前面,否則會出錯,可以簡單理解為,如果要捕獲多個異常,異常的範圍要按照從小到大順序疊放。

示例:catch多個異常

public class TryCatchFinally {
     pub1ic static void main(String[] args) {
       try{
             int x=5;
             int y= x/0;
             System. out.println(y) ;
        } catch (IllegalArgumentException e) {
                e. printStackTrace ();   //將錯誤列印到堆疊
        }catch (Exception e) {    //Exception的範圍比較大,應該放在後面
              e. printstackTrace(); *
        }
    }
}

總結:當丟擲一個異常時,異常會由相應的catch語句捕獲並處理。與一個try相關的catch語句可以有多個,構成多重catch語句,異常型別決定了要執行哪個catch語句。如果沒有丟擲異常,那麼,try程式碼塊就會結束,並且會跳過它的所有catch語句,從最後一個catch後面的第一個語句繼續執行。其實try語句也可以嵌入try語句,一個try程式碼塊可以嵌入到另一個try程式碼塊中。由於內部try程式碼塊產生的異常如果沒有被與該內部try程式碼塊相關的catch捕獲,就會傳到外部try程式碼塊。