You are on page 1of 20

X l ngoi l

HD: ThS Nguyn H Giang Khoa CNTT - Hutech

Ni dung

Tnh hung pht sinh ngoi l Cch x l ngoi l lm vic trong C# Cu lnh try-catch-finally

Tnh hung

Nhng li pht sinh khi rutime c th lm h hi chng trnh Khng phi li lp trnh VD: mt s tnh hung vit d liu vo file

a b y Li phn cng File b thay i thnh ch c

Cch x l trc y
GET A FILENAME OPEN THE FILE IF THERE IS NO ERROR OPENING THE FILE READ SOME DATA IF THERE IS NO ERROR READING THE DATA PROCESS THE DATA WRITE THE DATA IF THERE IS NO ERROR WRITING THE DATA CLOSE THE FILE IF THERE IS NO ERROR CLOSING FILE RETURN

Hu ht cc bc c kh nng tht bi Kh xc nh chnh xc li t nhng thng tin tr v ca hm th vin on code phi thc hin ri mi bit li

Cch x l Exception
TRY TO DO THESE THINGS: GET A FILENAME OPEN THE FILE READ SOME DATA PROCESS THE DATA WRITE THE DATA CLOSE THE FILE RETURN IF ERROR OPENING THE FILE THEN ... IF ERROR READING THE DATA THEN ... IF ERROR WRITING THE DATA THEN ... IF ERROR CLOSING THE FILE THEN ...

on code x l ngn gn, d c Logic chng trnh hp l hn, nhng on nghi ng c li nm trong vng Try Cho php x l tnh hung li r rng v n gin

Cc i tng Exception

Trong C#, khi runtime error xut hin


CLR s xc nh li v pht sinh ta i tng Exception i tng Exception ny c nm tr li stack ch cho mt phng thc bt li . Nu Exception ny khng c chng trnh catch th CRL s in ra thng ip li

M hnh gi x l Exception
CLR Runtime

The Main( ) method

Method Calls Travel Down

Exceptions Passed Up

First Method

Exception Thrown Here

S dng try-catch

Dng Try-catch x l ngoi l


t code c kh nng dn n ngoi l vo khi try Cung cp cc khi catch theo sau try C th cung cp tt c catch cho cc li nu mun x l, bng cch s dng cc lp exception thch hp Nu khng cung cp catch cho mt ngoi l, th exception ny n lan truyn ln trn.

C php Try-Catch
Code c kh nng dn n li

try {
RiskyBussiness(); } catch (SomeException e ) { // Handle code }

Tham s exception c catch

on x l vi tnh hung c li

Khi try

Bao gm cc phn

T kha try Theo sau khi {} Khi {} bt buc phi c, khc vi {} trong if hay for t bt c cu lnh no c kh nng pht sinh ra ngoi l

Bn trong khi try

Khi catch

t mt hay nhiu ngay sau khi try

Khng c lnh no chen gia hai khi catch ca mt try

C php khi catch nh sau


catch (Exception-class [var1]) { // x l ngoi l 1 } catch (Exception-class [var2]) { // x l ngoi l 2 }

V d try-catch

Chng trnh b terminate

Chng trnh kt thc bnh thng

S dng Finally

Khi mt exception c nm ra

Lung thc thi s nhy vo khi catch x l n. Mt s on code gii phng ti nguyn c th b b qua // ngoi l c pht sinh // on code ny b b qua, d file cha ng

Open File Read Data Close File

Khi try-catch c phn option l finally Lun lun c gi S dng dn dp cc ti nguyn ang nm gi

VD c try-catch-finally

Lun thc thi d c hay khng c ngoi l

Lnh throw

Cho php nm ra mt ngoi l

C php: throw exception_object

Pht sinh ra ngoi l

Lp Exception

C 2 loi ngoi l

Ngoi l pht sinh bi chng trnh Ngoi l c to bi CLR

Lp System.Exception l c s cho tt c lp trong C# 2 lp k tha t lp ny:

ApplicationException: thng lm lp c bn cho lp ngoi l pht sinh t ng dng SystemException: do CLR pht sinh

Lp Exception (2)
Mt s lp Exception thng dng

System.OutOfMemoryException System.NullReferenceException Syste.InvalidCastException Syste.ArrayTypeMismatchException System.IndexOutOfRangeException System.ArithmeticException System.DevideByZeroException System.OverFlowException

T to lp exception

VD truy xut file

Tm tt

Exception lm cho chng trnh cht ch hn. Trnh tetminal chng trnh t ngt v nhng li runtime Tp cc lp Exception a dng, bao hm cc vn pht sinh lc runtime Lp Exception l lp c s cho cc lp x l ngoi l trong .NET D dng nh ngha lp ngoi l, v pht sinh ngoi l trong chng trnh

You might also like