例外的概念和系統(tǒng)例外

例外

  • 例外是程序設(shè)計(jì)語(yǔ)言提供的一種功能凌外,用來(lái)增強(qiáng)程序的健壯性和容錯(cuò)性螺男。

ORACLE 中的例外

  • 系統(tǒng)例外

  • 自定義例外

系統(tǒng)例外

  • No_data_found (沒(méi)有找到數(shù)據(jù))
  • Too_many_rows (select..into語(yǔ)句匹配多個(gè)行)
  • Zero_Divide (被零除)
  • Value_error (算術(shù)或轉(zhuǎn)換錯(cuò)誤)
  • Timeout_on_resource (在等待資源時(shí)發(fā)生超時(shí))

No_data_found 案例

--系統(tǒng)例外:no_data_found
SET SERVEROUTPUT ON

DECLARE
 pe_first_name EMPLOYEES.FIRST_NAME%TYPE;
 pe_last_name EMPLOYEES.LAST_NAME%TYPE;
 
BEGIN
 --查詢員工號(hào)是1234的員工姓名
 select first_name,last_name into pe_first_name,pe_last_name from EMPLOYEES where EMPLOYEE_ID=1234;

exception
 when no_data_found then DBMS_OUTPUT.PUT_LINE('沒(méi)有找到該員工');
 when others then DBMS_OUTPUT.PUT_LINE('其他例外');
end;
/
 

Too_many_rows 案例

--系統(tǒng)例外:too_many_rows
SET SERVEROUTPUT ON

DECLARE
 --定義變量
 pe_first_name EMPLOYEES.FIRST_NAME%TYPE;
 pe_last_name EMPLOYEES.LAST_NAME%TYPE;
 
BEGIN
 select first_name,last_name into pe_first_name,pe_last_name from EMPLOYEES where DEPARTMENT_ID=60;

exception
 when too_many_rows then DBMS_OUTPUT.PUT_LINE('selectinto 匹配了多行');
 
 when others then DBMS_OUTPUT.PUT_LINE('其他例外');
end;
/

Zero_Divide 案例

--系統(tǒng)例外:被0除 zero_divide
SET SERVEROUTPUT ON

DECLARE
 --定義變量
 pnum number;
 
BEGIN
 pnum := 1/0;
exception
 when zero_divide then DBMS_OUTPUT.PUT_LINE('1:0不能做除數(shù)');
                       DBMS_OUTPUT.PUT_LINE('2:0不能做除數(shù)');
 when others then DBMS_OUTPUT.PUT_LINE('其他例外');
end;
/
 

value_error 案例

--系統(tǒng)例外:value_error
SET SERVEROUTPUT ON

DECLARE
 --定義變量
 pnum number;
 
BEGIN
 pnum := 'abc';
exception
 when value_error then DBMS_OUTPUT.PUT_LINE('算術(shù)或者轉(zhuǎn)換錯(cuò)誤');
 when others then DBMS_OUTPUT.PUT_LINE('其他例外');
end;
/
 

自定義例外

  • 定義變量干签,類型是exception
  • 使用raise拋出自定義例外
--自定義例外:查詢50號(hào)部門(mén)的員工的姓名
SET SERVEROUTPUT ON

DECLARE
 --定義光標(biāo)及刻,代表50號(hào)部門(mén)的員工姓名
 cursor cemp is select first_name,last_name from EMPLOYEES where DEPARTMENT_ID = 300;
 
 pe_first_name EMPLOYEES.first_name%type;
 pe_last_name EMPLOYEES.LAST_NAME%TYPE;
 
 --自定義例外
 no_emp_found EXCEPTION;
BEGIN
 --打開(kāi)光標(biāo)
 open cemp;
 
 --直接取一個(gè)員工的姓名
 FETCH cemp into pe_first_name,pe_last_name;
 
 if cemp%notfound then
    --拋出例外
    raise no_emp_found;
 end if;
  
 --關(guān)閉光標(biāo)
 --oracle會(huì)自動(dòng)啟動(dòng)pmon(process monitor) 關(guān)閉光標(biāo)
 close cemp;
exception
 when no_emp_found then DBMS_OUTPUT.PUT_LINE('沒(méi)有找到員工');
 when others then DBMS_OUTPUT.PUT_LINE('其他例外');
end;
/
 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末毫蚓,一起剝皮案震驚了整個(gè)濱河市征绎,隨后出現(xiàn)的幾起案子蹲姐,更是在濱河造成了極大的恐慌磨取,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柴墩,死亡現(xiàn)場(chǎng)離奇詭異忙厌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)江咳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)逢净,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人歼指,你說(shuō)我怎么就攤上這事爹土。” “怎么了踩身?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵胀茵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我挟阻,道長(zhǎng)琼娘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任附鸽,我火速辦了婚禮脱拼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坷备。我一直安慰自己熄浓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布省撑。 她就那樣靜靜地躺著赌蔑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丁侄。 梳的紋絲不亂的頭發(fā)上惯雳,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音鸿摇,去河邊找鬼。 笑死劈猿,一個(gè)胖子當(dāng)著我的面吹牛拙吉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播揪荣,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼筷黔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了仗颈?” 一聲冷哼從身側(cè)響起佛舱,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤椎例,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后请祖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體订歪,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年肆捕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刷晋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡慎陵,死狀恐怖眼虱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情席纽,我是刑警寧澤捏悬,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站润梯,受9級(jí)特大地震影響过牙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仆救,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一抒和、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧彤蔽,春花似錦摧莽、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蚁袭,卻和暖如春征懈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背揩悄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工卖哎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人删性。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓亏娜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蹬挺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子维贺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容