Oracle學習(十二) 異常

來源:互聯網
上載者:User

語句執行過程中,可能會因為異常造成損失,甚至是系統崩潰。為了避免這種情況的發生,必須對異 常進行處理。PL/SQL提供了對異常進行處理的方法。該方法會使得在PL/SQL代碼部分執行的過程中無論 何時發生了異常錯誤,都會自動轉向執行異常處理部分。

1、預定義異常

預定義異常是由系統產生的。比如在出現0為除數的時候,系統會產生一個預定義的ZERO_DIVIDE異常 。樣本如下:

declare     num1 number := 2;      num2 number := 0;      num3 number;  begin    num3 := num1/num2; --當執行這句的時候,系統捕捉到異常會自動轉到異常處理部分,最後輸出“不能除0”。      exception      when zero_divide then        dbms_output.put_line('不能除0');      when too_many_rows then        dbms_output.put_line('too many rows');  end;

如果在當前塊中沒有處理異常的代碼,並且begin/end塊是嵌套的,程式將繼續在外部塊中尋找處理 異常的代碼塊,直到找到一個。如果最終沒有處理異常的代碼塊存在,程式將結束。當對異常進行了處 理後,程式將繼續執行異常代碼塊之後的代碼。

2、自訂異常

使用者如果需要自訂異常的話,可以先定義一個exception變數,然後使用raise語句來拋出一個異常 ,然後在捕捉異常的時候捕捉對應的拋出異常。範例程式碼如下:

declare    selfDefineException exception; /*定義異常變數*/      num1 number := 2;      num2 number := 3;      num3 number;  begin    num3 := num1 + num2;      if num3=5 then        raise selfDefineException; /*拋出自訂的異常*/      end if;      exception          when selfDefineException then /*捕獲自訂的異常*/              dbms_output.put_line("selfDefineException");          when zero_divide then            dbms_output.put_line("不能除0");  end;

3、使用others異常

對於那些沒有直接捕捉的異常,都可以使用others異常進行捕捉,others異常可以單獨使用,但當與 其他異常處理一起使用的時候必須放在所有情況的最末尾。範例程式碼如下:

declare     num1 number := 2;      num2 number := 0;      num3 number;  begin    num3 := num1/num2; --當執行這句的時候,系統捕捉到異常會自動轉到異常處理部分,最後輸出“不能除0”。      exception      when others then /*這裡直接捕捉others異常*/          dbms_output.put_line('不能除0');  end;

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.