Bai7 Exception

download Bai7 Exception

of 35

Transcript of Bai7 Exception

  • 8/3/2019 Bai7 Exception

    1/35

    GING VIN:V TN DNG

    TRNG CAO NG CNG NGH THNG TIN TP.HCM

    NHP MN JAVA

    BI 7X L NGOI L(EXCEPTION)

    GV:VT

    nDng

  • 8/3/2019 Bai7 Exception

    2/35

    2

    X l li v ngoi l Khi try/catch/finally

    Cc lp ngoi l

    Xy dng lp ngoi l

    Lan truyn ngoi l

    Tung li ngoi l Bi tp

    NI DUNG TRNH BY

  • 8/3/2019 Bai7 Exception

    3/35

    3

    Trong mt s ngn ng nh C, vic x l lithng c ci t ngay ti cc bc thc hinca chng trnh. Cc hm s tr v mt cutrc li khi gp li.

    V d: Tm kim phn t trong mt danh schErrorStruct error = new ErrorStruct();

    TableEntry entry = lookup(Marianna, employee, error);

    if (entry == null){

    return error;

    }

    X L LI V NGOI L

  • 8/3/2019 Bai7 Exception

    4/35

    4

    M lnh v m x l li nm xen k khin lptrnh vin kh theo di c thut ton chnhca chng trnh.

    Khi mt li xy ra ti hm A, tt c cc li gihm lng nhau n A u phi x l li m Atr v.

    X L LI V NGOI L

  • 8/3/2019 Bai7 Exception

    5/35

    5

    Trong Java, vic x l li c th c ci ttrong mt nhnh c lp vi nhnh chnh cachng trnh.

    Li c coi nh nhng trng hp ngoi l(exceptional conditions). Chng c bt/nm(catch and throw) khi c li xy ra.

    => Mt trng hp li s ch c x l ti ni

    cn x l.=> M chnh ca chng trnh sng sa, ngvi thit k thut ton.

    X L LI V NGOI L

  • 8/3/2019 Bai7 Exception

    6/35

    6

    import java.awt.Point;

    public class MyArray{

    public static void main(String[ ] args) {System.out.println("Goi phuong thuc methodeX()");methodeX();System.out.println("Chuong trinh ket thuc binh thuong");

    }

    public static void methodeX() {Point[ ] pts = newPoint[10];for(int i = 0; i < pts.length; i++) {

    pts[i].x = i;pts[i].y = i+1;}

    }}

    V D 1

  • 8/3/2019 Bai7 Exception

    7/35

    7

    Goi phuong thuc methodeX()Exception in thread "main" java.lang.NullPointerException

    at MyArray.methodeX(MyArray.java:14)at MyArray.main(MyArray.java:7)

    Gii thch: H thng tung ra mt exception thuc lpNullPointerExceptionkhi gp li. Sau chng trnh ktthc.

    KT QU THC THI V D 1

  • 8/3/2019 Bai7 Exception

    8/35

    8

    public class MyDivision {

    public static void main(String[ ] args) {System.out.println("Goi phuong thuc A()");A();System.out.println("Chuong trinh ket thuc binh thuong");

    }

    public static void A() {B();

    }public static void B() {

    C();

    }public static void C() {float a = 2/0;

    }}

    V D 2

  • 8/3/2019 Bai7 Exception

    9/35

    9

    Goi phuong thuc A()Exception in thread "main" java.lang.ArithmeticException: / by zero

    at MyDivision.C(MyDivision.java:14)at MyDivision.B(MyDivision.java:11)at MyDivision.A(MyDivision.java:8)

    at MyDivision.main(MyDivision.java:4)

    Gii thch: Phng thc A() gi B(), B() gi C(), C() gy ra lichia cho 0 v h thng nm ra mt exception thuc lp

    ArithmeticException. Sau chng trnh kt thc.

    KT QU THC THI V D 2

  • 8/3/2019 Bai7 Exception

    10/35

    10

    Khi mt phng thc gp li no , v dnh chia khng, vt kch thc mng,m file cha tn ti th cc ngoi l sc nm ra. Chng trnh dng li ngaylp tc, ton b phn m pha sau skhng c thc thi.

    Java h tr cch thc x l ngoi l

    (exception handling) tu theo nhu cu cachng trnh.

    NGOI L

  • 8/3/2019 Bai7 Exception

    11/35

    11

    Khi try/catch t on m c kh nng xy ra ngoi l

    trong khi try

    t on m x l ngoi l trong khi catch Khi xy ra ngoi l trong khi try, cc culnh trong khi catch s c thc hin tuvo kiu ca ngoi l.

    Sau khi thc hin xong khi catch, iukhin s c tr li cho chng trnh.

    X L NGOI L

  • 8/3/2019 Bai7 Exception

    12/35

    12

    V d 1:try{

    methodeX();System.out.println(Cau lenh ngay sau methodX());

    }catch (NullPointerException e){

    System.out.println(Co loi trong khoi try);}System.out.println(Cau lenh sau try/catch);

    KHI TRY/CATCH

  • 8/3/2019 Bai7 Exception

    13/35

    13

    try {

    x = System.in.read();System.out.println(x = + x);} catch (IOException e) {

    System.out.println(Error: + e.getMessage());}

    try {A();

    } catch (Exception e) {System.out.println(Co loi trong A());

    }

    V d 2:

    V d 3:

    KHI TRY/CATCH

  • 8/3/2019 Bai7 Exception

    14/35

    14

    try{

    String s = buff.readLine();int a = Integer.parseInt(s);x[i++] = a;

    } catch (IOException e) {System.out.println(Error IO: + e.getMessage());

    } catch (NumberFormatException e) {System.out.println(Error Format: + e.getMessage());

    } catch (ArrayIndexOutOfBoundsException e) {System.out.println(Error Index: + e.getMessage());}

    V d 4:

    KHI TRY/CATCH

  • 8/3/2019 Bai7 Exception

    15/35

    15

    Khi mt ngoi l xy ra, chng trnh dng li,mt s cng vic dn dp c th s khngc thc hin (v d nh ng file).

    Khi finally m bo rng cc cu lnh trong

    lun c thc hin, k c khi ngoi l xyra.try{

    doSomething(); // phng thc ny c th gy ra ngoi l} finally {

    cleanup();}

    KHI FINALLY

  • 8/3/2019 Bai7 Exception

    16/35

    16

    Cc ngoi l xy ra khi gp li. C th bt v x l cc ngoi l bng cch s

    dng khi try/catch. Nu khng chng trnhs kt thc ngay (vi ng dng console) hoc

    tip tc tn ti (vi ng dng GUI). Khi bt ngoi l, phi bit r kiu ngoi l cn

    bt. C th dng kiu cha Exception.

    chc chn vic dn dp lun c thchin, dng khi finally. C th kt hptry/catch/finally.

    TM TT V X L NGOI L

  • 8/3/2019 Bai7 Exception

    17/35

    17

    ClassNotFoundException

    Throwable

    Error Exception

    RuntimeExceptionAssertionError IOException

    Object

    NullPointerException ArithmeticException

    MT S LP NGOI L

  • 8/3/2019 Bai7 Exception

    18/35

    18

    Lp Throwable C mt bin String lu thng tin chi tit v

    ngoi l xy ra

    Mt s phng thc c bn Throwable(String s); // To mt ngoi l c tn ls.

    String getMessage(); // Ly thng tin v ngoi l

    void printStackTrace(); // In ra tt c cc thng tinlin quan n ngoi l

    MT S LP NGOI L

  • 8/3/2019 Bai7 Exception

    19/35

    19

    Lp Exception C nhiu ngoi l thuc lp con ca

    Exception.

    Ngi dng c th to ra cc ngoi l k

    tha t Exception. Lp Error

    Ch nhng li nghim trng v khng d

    on trc c nh ThreadDead,LinkageError, VirtualMachineError...

    Cc ngoi l kiu Error t c x l.

    MT S LP NGOI L

  • 8/3/2019 Bai7 Exception

    20/35

    20

    RuntimeException: Ch cc ngoi l c th

    xy ra khi JVM thc thi chng trnh NullPointException: con tr null

    OutOfMemoryException: ht b nh

    ArithmeticException: li ton hc, li chiakhng

    ClassCastException: li p kiu

    ArrayIndexOutOfBoundsException: vt quch s mng

    ...

    MT S LP NGOI L

  • 8/3/2019 Bai7 Exception

    21/35

    21

    Ngoi l unchecked L cc ngoi l khng bt buc phi ckim tra.

    Gm RuntimeException, Error v cc lp conca chng.

    Ngoi l checked L cc ngoi l bt buc phi c kim tra.

    Gm cc ngoi l cn li.

    HAI LOI NGOI L

  • 8/3/2019 Bai7 Exception

    22/35

    22

    Gi s method1 gi method2 v method2l phng thc c kh nng nm ngoi lkiu checked, lc : hoc method2 phi nm trong khi try/catch.

    hoc phi khai bo method1 c kh nngnm (throws) ngoi l.

    CH VI NGOI L CHECKED

  • 8/3/2019 Bai7 Exception

    23/35

    23

    Cch 1: try/catchpublic static void main(String[] args){

    try {String s = buff.readLine();

    } catch (IOException e) {...

    }

    }

    Cch 2: Khai bo throwspublic static void main(String[ ] args) throwsIOException{

    String s = buff.readLine();

    }

    V D (NGOI L IOException)

  • 8/3/2019 Bai7 Exception

    24/35

    24

    Bi 1: Ci t x l cc ngoi l chochng trnh tnh thng 2 s bng giaodin GUI.

    Bi 2: Ci t x l li bng cch dngngoi l cho v d phn u bi.

    Bi tp

  • 8/3/2019 Bai7 Exception

    25/35

    25

    nh ngha lp ngoi l// file MyException.java

    public class MyException extendsException{

    public MyException(String msg){

    super(msg);}

    }

    NGOI L DO NGI DNG TO

  • 8/3/2019 Bai7 Exception

    26/35

    26

    S dng ngoi l// file ExampleException.javapublic class ExampleException{

    public void copy(String fileName1, String fileName2)throws MyException

    {if(fileName1.equals(fileName2))

    throw newMyException("File trung ten"); // tung ngoi l

    System.out.println("Copy completed");}

    Khai bo kh nng tung ngoi l

    Tung ngoi l

    NGOI L DO NGI DNG TO

  • 8/3/2019 Bai7 Exception

    27/35

    27

    S dng ngoi lpublic static void main(String[] args){

    ExampleException obj = new ExampleException();try {

    String a = args[0];String b = args[1];obj.copy(a,b);

    } catch (MyException e) {System.out.println(e.getMessage());

    }}

    }

    NGOI L DO NGI DNG TO

  • 8/3/2019 Bai7 Exception

    28/35

    28

    Tnh hung Gi s trong main() gi phng thc A(),

    trong A() gi B(), trong B() gi C(). Khi mt

    ngn xp cc phng thc c to ra. Gi s trong C() xy ra ngoi l.

    LAN TRUYN NGOI L

  • 8/3/2019 Bai7 Exception

    29/35

    29

    C()B()

    A()

    main()

    B()

    A()

    main()

    C() tung ngoi l

    Nu C() gp li v tung ra ngoi l nhng trong C() li khng x lngoi l ny, thch cn mt ni c th x l chnh l ni m C() cgi, l trong phng thc B(). Nu trong B() cng khng x l th

    phi x l ngoi l ny trong A()Qu trnh ny gi l lan truynngoi l.

    Nu n main() cng khng x l ngoi l c tung t C() thchng trnh s phi dng li.

    LAN TRUYN NGOI L

  • 8/3/2019 Bai7 Exception

    30/35

    30

    Trong khi catch, ta c th khng x l trc

    tip ngoi l m li nm li ngoi l choni khc x l.

    catch (IOException e) {throw e;

    }

    Ch : Trong trng hp trn, phng thccha catch phi bt ngoi l hoc khai bo

    throws cho ngoi l (nu l loi checked).

    NM LI NGOI L

  • 8/3/2019 Bai7 Exception

    31/35

    31

    Khng nn s dng ngoi l thay cho cclung iu khin trong chng trnh. V d: Kim tra delta trong chng trnh gii

    phng trnh bc 2.

    Nn thit k v s dng ngoi l mt cchthng nht cho ton b d n.

    Mt s x l li bng ngoi l ph bin l: ht

    b nh, vt qu ch s mng, con tr null,chia cho 0, i s khng hp l...

    CH KHI S DNG NGOI L

  • 8/3/2019 Bai7 Exception

    32/35

    32

    1. Vit chng trnh cho php tnh gi tr ca biuthc:

    A =

    Yu cu x l cc ngoi l c th xy ra.

    2. Vit chng trnh cho php to mt mng 2

    chiu c mxn vi m,n nhp t bn phm. Cit cc x l ngoi l cn thit.

    5x - y

    2x + 7y

    BI TP

    BI TP

  • 8/3/2019 Bai7 Exception

    33/35

    33

    3. Xy dng lp ngoi l DateException cho ccli v ngy thng.

    4. Vit chng trnh cho php ngi dng nhpvo ngy, thng nm, nu thng tin ny khnghp l s tung ra mt ngoi l DateException,sau thng bo cho ngi nhp bit v chophp ngi dng nhp li.

    BI TP

    BI TP 5

  • 8/3/2019 Bai7 Exception

    34/35

    34

    5. Tm hiu li lp Candidate hc (d liugm m th sinh, tn v im thi 3 mn). iug s xy ra khi to mt i tng thuc lpCandidate vi d liu a vo khng hp l ?

    Ci t lp CandidateException bt cc linh trn. Yu cu khi c li th s cho bit ctn v m th sinh b li.

    BI TP 5

  • 8/3/2019 Bai7 Exception

    35/35

    HT

    BI 7

    V

    TnDng