G r i x l l i ngo i l
This presentation is the property of its rightful owner.
Sponsored Links
1 / 26

Gỡ rối – Xử lý lỗi – Ngoại lệ PowerPoint PPT Presentation


  • 60 Views
  • Uploaded on
  • Presentation posted in: General

Gỡ rối – Xử lý lỗi – Ngoại lệ. Nhóm 10. Nội dung. Tầm quan trọng của gỡ lỗi. Xác nhận (assertions) Xử lý lỗi Xử lý ngoại lệ Xử lý rào chắn Các công cụ sửa lỗi. Tầm quan trọng của gỡ lỗi. BEGIN. Syntax error. Compile. Hiện thực. Bài toán. Code. No Syntax error. Wrong result. Run.

Download Presentation

Gỡ rối – Xử lý lỗi – Ngoại lệ

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


G r i x l l i ngo i l

Gỡ rối – Xử lý lỗi – Ngoại lệ

Nhóm 10


N i dung

Nội dung

  • Tầm quan trọng của gỡ lỗi.

  • Xác nhận (assertions)

  • Xử lý lỗi

  • Xử lý ngoại lệ

  • Xử lý rào chắn

  • Các công cụ sửa lỗi


T m quan tr ng c a g l i

Tầm quan trọng của gỡ lỗi

BEGIN

Syntax error

Compile

Hiện

thực

Bài toán

Code

No

Syntax error

Wrong result

Run

END

Correct result

Chương trình

?

Run-time error

( Exception )


C c lo i l i c a ch ng tr nh

Các loại lỗi của chương trình

  • Compile-time error = Syntax error

  • Run-time error = Exception, tình huống bất bình thường đã xẩy ra trong khi chương trình thực thi.

  • Khi có Exception:

    • Có thể là máy bị treo (halt).

    • Chương trình ngắt đột ngột, điều khiển trả về cho OS, OS thu hồi bộ nhớ của chương trình ( đuổi ra ngoài ).

  • Cần có cơ chế điều khiển tình huống này.


T m quan tr ng c a g l i1

Tầm quan trọng của gỡ lỗi

  • Tránh các lỗi đáng tiếc xảy ra.

  • Giảm bớt hậu quả thiệt hại về lỗi


Assertion l g

Assertion làgì

  • Địnhnghĩa: Assertion làmộtđoạn code chophép 1 chươngtrìnhtựkiểmtrachínhnótrongquátrìnhthựcthi. Nếugiátrịcủa assertion là true chươngtrìnhhoạtđộngđúng , nếu false làpháthiệnlỗitrongchươngtrình.

  • Lậptrìnhviênsửdụng assertion đểmôtảcáchthứccácđoạn code hoạtđộngnhưthếnào, chứngthựccácràngbuộcbêntronghệthống.


G r i x l l i ngo i l

Một assertion thườngnhận 2 đốisố: 1 biểuthứcluậnlýkếtquảtrảvềlà true hoặc false chobiếtchươngtrìnhchạysai hay đúng. Mộtđốisốlà 1 messages thôngbáocholậptrìnhviênbiếtlỗicủachươngtrìnhnếukếtquảlà false.

VD: trong java dùng assertion nhưsau:

Assert 0 <= index && index < length : “ Out of memory”;

  • Trong C++ cungcấp macro “ assert” tươngtựnhưhàmnhưngkhôngcóthamsố message thôngbáolỗi.

    Vd: assert(0 <= index && index < length);


X l c c assertion b th t b i

Xử lý các assertion bị thất bại

  • Khi assertion bị thất bại, đầu tiên là nó sẽ truyền thông báo lỗi đến người dùng bằng nhiều cách (in ra màn hình, message box, file log...). Khi các thông báo chuẩn đoán được hiển thị. Có nhiều cách chọn lựa tiếp theo:

    • Kết thúc chương trình

    • Cho phép thực thi tiếp chương trình

    • Quăng một ngoại lệ quay về đoạn code bị lỗi.

    • Cho phép kết hợp 1 hay nhiều cách trên.


L i ch c a assertions

Lợi ích của assertions

  • Vai trò của các assertion là xác định lỗi trong chương trình.

  • Một lợi ích lớn nữa là giúp việc kiểm thử ứng dụng được hiệu quả hơn.

  • Tuy nhiên assertion chỉ có hiệu quả khi được thực thi trong đoạn mã nguồn chứa nó.


Gi i h n c a assertions

Giới hạn của assertions

  • Bản thân 1 assertion cũng có thể tồn tại các lỗi và do 1 trong các nguyên nhân sau:

    • Thông báo lỗi không có thực.

    • Không thực hiện được 1 báo cáo lỗi tồn tại trong chương trình

    • Not being side-effect free

      Assertion có thể tác động đến hiệu năng cùa chương trình:

      • Chiếm nhiều thời gian thực thi

      • Nắm giữ vùng nhớ

        Các assertion có thể làm cho việc kiểm thử chương trình khó khăn hơn.


X l l i

Xử lý lỗi

  • Neutral value (giá trị trung lập)

  • Substitute the next piece of valid data (thay thế phần kế tiếp của dữ liệu hợp lệ)

  • Return the same answer as the previous time (trả về kết quả giống nhau như thời gian trước)

  • Substitute the closet legal value (thay thế giá trị hợp lệ gần đúng nhất)

  • Log a warning message to a file (gửi thông điệp cảnh báo đến 1 file)

  • Return an error code (trả về 1 lỗi code)

  • Call an error processing routine/object (gọi 1 đối tượng/routine xử lý lỗi)

  • Display an error message wherever the error is encountered (hiển thị thông báo lỗi bất cứ khi nào 1 lỗi được gặp phải).

  • Handle the error in whatever way works best locally (xử lý các lỗi trong bất cứ cách nào hoạt động tốt nhất tại nội bộ)

  • shutdown


X l ngo i l exception handle

  • Định nghĩa:

  • Là một lỗi đặc biệt( chia cho 0, vượt kích thước mảng, mở file chưa tồn tại… )

  • Xuất hiện lúc thực thi chương trình

  • Tạo ra các excception, các trạng thái này không được biết trước khi đang xây dựng chương trình

  • Có thể bị kết thúc đột ngột

  • Các ngôn ngữ lập trình mạnh về xử lý ngoại lệ: Java, C#,…

    Mục đích:

  • Chương trình không bị ngắt đột ngột

  • Tránh lãng phí tài nguyên

XỬ LÝ NGOẠI LỆ (Exception Handle)


X l ngo i l exception handle1

XỬ LÝ NGOẠI lỆ(Exception Handle)

Mô hình xử lý ngoại lệ trong Java:

  • catch & throw. 5 từ khóa để xử lý ngoại lệ:

    • Try

    • Catch

    • Throw

    • Throws

    • Finally


X l ngo i l exception handle2

XỬ LÝ NGOẠI LỆ(Exception Handle)

Cấu trúc:

try { }

catch(Exception e1) { }

catch(Exception e2) { }

catch(Exception eN) { }

Finally { }


X l ngo i l exception handle3

XỬ LÝ NGOẠI LỆ(Exception Handle)

Ưu điểm:

  • Phân phối trạng thái lỗi chỉ vào những nơi cần thiết

  • Một thông báo lỗi có thể được xuất ra khi tiến hành xử lý ngoại lệ


B y l i b ng try catch finally

Bẫy lỗi bằng try...catch...finally

  • Để chương trình vẫn có thể tiếp tục hoạt động, người lập trình cần phải dự đoán lỗi có thể xẩy ra để bẫy lỗi.

  • Bẫy lỗi bằng cú pháp: try...catch ...finally ...

try

{ < các lệnh thử làm>

}

catch ( Exception1 e1)

{ < code xử lý lỗi>

}

catch ( Exception2 e2)

{ < code xử lý lỗi>

}

finally

{ <các lệnh sẽ làm dù có lỗi hay không>

}

// Buộc phải có {...} dù chỉ có 1 phát biểu


X l ngo i l exception handle4

XỬ LÝ NGOẠI LỆ(Exception Handle)

Khối ‘try’ và ‘catch’

  • Thi hành mô hình ‘catch và throw’

  • Một hay nhiều khối ‘catch’ có thể theo sau khối ‘try’

  • Các khối ‘catch’ bắt các ngoại lệ bị chặn trong khối ‘try’

    Ví dụ:

    try{

    doFileProcessing(); //user-defined method

    displayResults();

    }

    Catch(Exception e) {

    System.err.println(“Error:” + e.toString());

    e.printStackTrace();

    }


X l ngo i l exception handle5

XỬ LÝ NGOẠI LỆ(Exception Handle)

Các khối ‘try’ lồng nhau:

try

{

statement 1;

statement 2;

try

{

statement 1;

statement 2;

}

catch(Exception e) { } // of the inner try block

}

catch(Exception e) { }// of the outer try block


X l ngo i l exception handle6

XỬ LÝ NGOẠI LỆ(Exception Handle)

public class Example

{

public void exceptionExample() throws Exexception, LookupException

{

try

{

//statement

}

catch(ExException exmp) { }

catch(LokkupException lkpex) { }

}

}


X l ngo i l exception handle7

XỬ LÝ NGOẠI LỆ(Exception Handle)

Khối finally

  • Thực hiện thu hồi tài nguyên khi một ngoại lệ xảy ra

  • Sử dụng kết hợp với khối ‘try’

    try

    {

    doSomethingThatMightThrowAnException();

    }

    finally

    {

    cleanup();

    }


X l ngo i l exception handle8

XỬ LÝ NGOẠI LỆ(Exception Handle)

throw & throws

  • throw

  • ‘throw’ chỉ ra một ngoại lệ vừa xảy ra, là một đối tượng của lớp dẫn xuất từ ‘throwable’

    try

    {

    if(flag < 0)

    {

    throw new MyException(); // user-defined

    }

    }


X l ngo i l exception handle9

XỬ LÝ NGOẠI LỆ(Exception Handle)

throw & throws(tt)

  • throws

  • Áp dụng cho một phương thức để xử lý nhiều ngoại lệ


X l ngo i l exception handle10

XỬ LÝ NGOẠI LỆ(Exception Handle)

Danh sách một số Exception trong Java:

  • RuntimeException

  • ArthmeticException

  • IIIegalAccessException

  • IIIegalArgumentException

  • ArrayIndexOutOfBoundsException

  • NullPointerException

  • SecurityException

  • ClassNotFoundException

  • NumberFormatException

  • AWTException

  • IOException

  • FileNotFoundException

  • EOFException

  • NoSuchMethodException

  • InterruptedException


X l ngo i l exception handle11

XỬ LÝ NGOẠI LỆ(Exception Handle)

Tóm tắt

  • Bất cứ khi nào một lỗi xuất hiện trong khi thi hành chương trình, nghĩa là một ngoại lễ đã xuất hiện

  • Ngoại lệ phát sinh vào lúc thực thi chương trình theo trình tự code

  • Mỗi ngoại lệ phát sinh phải bị bắt giữ, nếu không ứng dụng sẽ bị ngắt

  • Cho phép kết hợp tất cả tiến trình xử lý lỗi trong một nơi

  • Các câu lệnh trong khối ‘try’ chặn ngoại lệ, khối ‘catch’ xử lý ngoại lệ

  • Nhiều khối catch có thể được sử dụng với các kiểu ngoại lệ khác nhau theo các cách khác nhau

  • ‘throws’ liệt kê các ngoại lệ mà phương thức có thể chặn được

  • ‘throw’ chỉ ra 1 ngoại lệ vừa xảy ra

  • ‘finally’ khai báo các cấu lệnh thu hồi tài nguyên cho hệ hống và xuất câu thông báo


R o ch n

RÀO CHẮN

  • Xử lý trước khi xảy ra lỗi.

    VD: if( num != 0) return a/num;

  • Xử lý giao diện hợp lý


  • Login