1. 程式人生 > >Oracle (2) 異常處理(預定義、非預定義、自定義)

Oracle (2) 異常處理(預定義、非預定義、自定義)

目錄

異常處理

異常處理

【導言】拋異常是為了執行的時候不報錯,並提示這段程式碼執行的結果有問題,讓開發者針對這個異常做特定處理(寫程式碼)。

1、預定義異常

【通用結構】

exception

    when  系統已經定義好的異常  then 出現異常的處理方法;

【導言】如果我們查詢的資料是表中不存在的,那麼執行後,就會直接報錯,停止執行。

declare
    v_sname student.sname%type;    --也可以v_sname varchar(10);這樣定義
begin
    select sname into v_sname from student where sno='0000000000';
end;

【例題】查詢學號為'0000000000'的學生姓名,如果沒有這個學生則丟擲異常,輸出“沒有查詢到資料”。

【輸出】沒有查詢到資料

declare
    v_sname student.sname%type;    --也可以v_sname varchar(10);這樣定義
begin
    select sname into v_sname from student where sno='0000000000';
    exception
        when  no_data_found  then dbms_output.put_line('沒有查詢到資料');
end;

【解析】由於"no_data_found'是系統已經定義好的異常(

錯誤程式碼大全),他有錯誤原因:查不到數值,錯誤程式碼ORA-01403,也有定義好的名字“not_data_found”。故可以直接用。

2、非預定義異常

【通用結構】非預定義異常

declare

異常名 exception;

begin

    pragma exception_init(我們起的名字,錯誤程式碼) ;

exception

    when  系統已經定義好的異常  then  出現異常的處理方法;

end;

【導言】在上面那個例子中,我們知道,錯誤原因:沒有資料。他有錯誤程式碼(ORA-01403)和錯誤名字“not_data_found”。

但是錯誤原因(錯誤程式碼)那麼多,不可能每一個錯誤都有類似“no_data_found”這樣的名字的,所以有時候需要利用非預定義異常,我們親自為系統能識別到的錯誤(有錯誤程式碼的)起個名字。 

假如插入一行已經存在的資料,會顯示:

declare 
begin
  insert into score values('11111','A001',76);
end;

他有錯誤程式碼,卻沒有名字,所以需要我們使用非預定義異常,為這個錯誤程式碼起個名字。

【例題】插入一條資料(假設我們不知道這個資料表中已經存在)【輸出:該條記錄已存在】

declare 
  e_exist exception;
  pragma exception_init(e_exist,-02291);
begin
  insert into score values('11111','A001',76);
  exception
     when e_exist then dbms_output.put_line('該條記錄已存在');
end;

3、自定義異常

【通用結構】自定義異常

declare

異常名 exception;(定義異常)

begin

raise 異常名 (觸發異常)

exception

    when  系統已經定義好的異常  then  出現異常的處理方法;(解決異常)

end;

【導言】 我們覺得哪種結果是“異常”的,就能定義。比如讓程式從0開始,迴圈輸出人類最大的歲數,對於計算機而言,迴圈到上百萬都沒問題,這對計算機而言不是異常,但實際上哪有人類能活這麼久,所以我們就能將超過100的數,當作異常。

【例題】使用者自定義異常,求1+2+3....+100的值,在求和的過程中如果發現結果超出1000,則丟擲異常,並停止求和。

declare
  err_outrange exception;
  s int:=0;
begin 
  for i in 1..100
  loop 
    s:=s+i;
    if s>1000 then            --觸發異常的條件
      raise err_outrange;      --raise,觸發異常
    end if;
  end loop;
  dbms_output.put_line(s);
  exception
     when err_outrange then dbms_output.put_line('超出範圍,停止計算');
end;

【輸出】超出範圍,停止計算

相關推薦

Oracle (2) 異常處理預定預定定義

目錄 異常處理 異常處理 【導言】拋異常是為了執行的時候不報錯,並提示這段程式碼執行的結果有問題,讓開發者針對這個異常做特定處理(寫程式碼)。 1、預定義異常 【通用結構】 exception     when  系統已經定義好的異常  then

7.2 異常處理Exception Handing

Exception Handing快速檢閱 C++的exception handing由三個主要語彙元件構成: 一個throw子句。它在程式某處發出一個exception,被丟擲去exception可能是內建型別,也可是自定義型別。 一個或多個catch。每個catch子句都是一

Spring Mvc使用Jackson進行json轉物件時,遇到的字串轉日期的異常處理Can not deserialize value of type Date from String

1、問題排查出現的場景:服務端通過springmvc寫了一個對外的介面,返回一個json字串,其中該json帶有日期,格式為yyyy-MM-dd HH:mm:ss客戶端通過feign呼叫該http介面,指定返回值為一個Dto,Dto中日期的欄位為Date型別客戶端呼叫該介面後

Oracle PL/SQL異常處理預定錯誤

非預定義錯誤 非預定義錯誤即其他標準的Oracle錯誤。對於這種異常情況的處理,需 要使用者在程式中定義,然後由Oracle自動將其引發。 對於這類異常情況的處理,首先必須對非定義的Oracle錯誤進行定義, 步驟如下。 1)在PL/SQL塊的定義部分定義異常情況:<

異常2----異常處理try...cache...finallythrows

二、try...catch異常處理 當執行程式時,可能丟擲異常。可以對可能出現異常的程式捕獲異常並處理。【例1】 當呼叫帶有throws的方法(指可能丟擲非RuntimeExce

Oracle 異常處理函式儲存過程

Oracle 異常處理 一、概述 異常分成三大類:預定義異常、非預定義異常、自定義異常 處理方法分為:直接丟擲異常、內部塊處理異常、遊標處理異常 預定義異常:由PL/SQL定義的異常。由於它們已在standard包中預定義了,因此,這些預定義異常可以直接在程式中使用,

2php的錯誤異常處理定義php的錯誤處理方式

 一、概述 自定義錯誤報告的處理方式,可以完全繞過標準的php錯誤處理函式,這樣就可以按照自己定義的 格式列印錯誤報告,或改變錯誤報告列印的位置,以下幾種情況可以考慮自定義錯誤處理。

異常處理——2-異常處理機制

left ron text pan 異常處理機制 異常類 捕獲異常 p s 捕獲 2-異常處理機制 1.使用try...catch捕獲異常 2.異常類的繼承體系七、異常處理——2-異常處理機制

python教程13異常處理__import__, hasatter,getatter,setatter

一、異常處理 python異常:  python的執行時錯誤稱作異常  (1)語法錯誤:軟體的結構上有錯誤而導致不能被直譯器解釋或不能被編譯器編譯  (2)邏輯錯誤:由於不完整或不合法的輸入所致,也可能是邏輯無法生成、計算或者輸出結果需要的過程無法執行等 python異常是一個物件,表示錯誤或意外情況  

4php的錯誤異常處理定義異常

一、php自帶的異常處理類: <?php class Exception { protected $message; // 異常資訊 protected $code; //

異常層次結構及異常處理trycatchfinally

在Java程式語言設計中,所有的異常都是由類來表示,異常物件都是派生於Throwable類的一個例項。下面是Java異常層析結構的一個簡單示意圖: 由圖可知,所有異常類都直接或間接的繼承於Throwable類。 具體分類: Java把所有非正常情況分為Error(錯

JAVA學習第十九課java程序的異常處理

num 函數 錯誤 style col 編譯失敗 return [] java 異常處理的捕捉形式: 這是能夠對異常進行針對性處理的方式 六、try、catch的理解 詳細格式: try { //須要被檢測異常的代碼 } catch(異常類 變量)//改變量用

Servlet 異常處理 配置錯誤頁面

使用 程序 頁面 sco class exception clas type load 當一個 Servlet 拋出一個異常時,Web 容器在使用了 exception-type 元素的 web.xml 中搜索與拋出異常類型相匹配的配置。 您必須在 web.xml 中使用

springMVC --全局異常處理兩種方式

nal font method mil -h util 一個 fail space 首先看springMVC的配置文件: <!-- 全局異常配置 start --> <bean id="exceptionResolv

實習培訓——Java異常處理8

如何工作 出了 我們 個數 試圖 類對象 bject epo 很多 實習培訓——Java異常處理(8) Java 異常處理 異常是程序中的一些錯誤,但並不是所有的錯誤都是異常,並且錯誤有時候是可以避免的。 比如說,你的代碼少了一個分號,那麽運行出來結果是提示是錯誤 java

spring boot 1.5.4 統一異常處理

springboot springboot1.5.4 springboot整合springdatajpa springboot集成jdbctemplate springboot異常處理 上一篇:springboot 1.5.4 配置文件詳解(八) 1 Spring Boot統一異

java中的try-catch-finnal異常處理學習筆記

不堪 java sha highlight 抽取 最終 throwable 關鍵字 學習筆記 一、異常概述 異常:Exception,是在運行發生的不正常情況。 原始異常處理: if(條件) {   處理辦法1  處理辦法2  處理辦法3} if(條件) {   處理辦法

MVC異常處理異常捕獲

src err 捕獲 uestc 技術 filters customer request sta 1.cshtml頁面異常 2.Controller異常 3.路由參數異常。 4.頁面不存在404 頁面不存在404,可以通過配置config來處理

錯誤和異常處理7

為什麽 nbsp 實現 str ron strong 指令 異常處理 處理 配置指令 錯誤日誌 異常處理 為什麽異常處理很方便 PHP的異常處理實現 SPL異常 錯誤和異常處理(7)

【Java入門提高篇】Day16 Java異常處理

http final 自定義異常 2個 輸入 也有 推薦 錯誤 num   今天繼續講解java中的異常處理機制,主要介紹Exception家族的主要成員,自定義異常,以及異常處理的正確姿勢。 Exception家族   一圖勝千言,先來看一張圖。   Excepti