Xử lý ngoại lệ

Tài liệu tương tự
Microsoft Word - jsp_exception_handling.docx

Kế thừa

26 Khoa hoïc Coâng ngheä LẬP TRÌNH PHÂN TÁN DÙNG CÔNG NGHỆ MOBILE AGENT VỚI SỰ HỖ TRỢ CỦA JAVA VÀ VOYAGER Tóm tắt ThS. Nguyễn Khắc Quốc * Lập trình ph

Kế thừa và đa hình

Những cơ sở của ngôn ngữ C# Những cơ sở của ngôn ngữ C# Bởi: phamvanviet truonglapvy Trong chương này sẽ trình bày về hệ thống kiểu trong C#; phân biệ

Copyright vietjack.com Chuỗi (String) trong C# Trong C#, bạn có thể sử dụng các chuỗi (string) như là mảng các ký

Trường ĐHBK Hà Nội Khoa Điện Bộ môn Điều khiển Tự động Tài liệu hướng dẫn thực hành: KĨ THUẬT LẬP TRÌNH C/C++ Bài 1: Lập trình cơ sở 1 Mục đích bài th

Java cơ bản

Microsoft Word - status_code_trong_servlet.docx

Lập trình và ngôn ngữ lập trình

Câu lệnh (statement) Câu lệnh (statement) Bởi: Khuyet Danh Trong C# một chỉ dẫn lập trình đầy đủ được gọi là câu lệnh. Chương trình bao gồm nhiều câu

PowerPoint Presentation

Microsoft Word - server_response_trong_servlet.docx

Microsoft Word - google_map_trong_android.docx

Animation, Modules 6 - Hoạt hình, tách file

Microsoft Word - xu_ly_cookie_trong_servlet.docx

-./, Thread;VA š]mšr ºÕ LAlr try... catchµ~ºõ q q l l ^ 1 ÝÞßàáâ 1.1 ãèêæçðöùò ouyºõlé{uw] lrb 4OYGI~2x System.out.println(...) š_ ~x

Phụ lục 2: HỒ SƠ NĂNG LỰC NĂM 2014

Phụ lục 2: HỒ SƠ NĂNG LỰC NĂM 2014

NGÔN NGỮ THỐNG KÊ R

Chương trình dịch

9-KiemThu

Microsoft Word - activity_trong_android.docx

Microsoft Word - client_request_trong_servlet.docx

NGÔN NGƯ LÂ P TRIǸH Biên tập bởi: nguyenvanlinh

Copyright vietjack.com Nạp chồng toán tử trong C# Operator Overloading là Nạp chồng toán tử. Bạn có thể tái định

Microsoft Word - Lab09 - WebSieuthisach.doc

Array, Indexer và Collection Array, Indexer và Collection Bởi: phamvanviet truonglapvy Mảng (Array) Mảng là một tập hợp các phần tử có cùng kiểu, được

Microsoft Word - jsp_syntax.docx

Tìm hiểu ngôn ngữ lập trình Visual Basic Tìm hiểu ngôn ngữ lập trình Visual Basic Bởi: Khuyet Danh Tìm hiểu ngôn ngữ lập trình Visual Basic Tổng quan

Microsoft Word - session_tracking_trong_servlet.docx

Lớp và đối tượng-các hàm và các lớp friend Lớp và đối tượng-các hàm và các lớp friend Bởi: Thanh Hiền Vũ CÁC HÀM VÀ CÁC LỚP friend Một hàm friend của

Phương pháp biểu diễn thuật toán Phương pháp biểu diễn thuật toán Bởi: Khoa CNTT ĐHSP KT Hưng Yên Khi chứng minh hoặc giải một bài toán trong toán học

Microsoft Word - action_trong_jsp.docx

Bộ máy quản lý và cơ cấu tổ chức của doanh nghiệp Bộ máy quản lý và cơ cấu tổ chức của doanh nghiệp Bởi: Vũ Quang Minh Bộ máy quản lý doanh nghiệp. Kh

Microsoft Word - kieu_du_lieu_trong_jdbc.docx

Microsoft Word - tao_ung_dung_hello_world_trong_android.docx

Microsoft Word - bo_tien_xu_ly_trong_c.docx

Lập trình cấu trúc trong Visual Basic Lập trình cấu trúc trong Visual Basic Bởi: Nguyễn Sơn Học xong chương này, sinh viên phải nắm bắt được các vấn đ

Microsoft Word - custom_font_trong_android.docx

Microsoft Word - audio_capture_trong_android.docx

NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Giảng viên: Đỗ Thị Thanh Tuyền

Microsoft Word - custom_component_trong_android.docx

Các cấu trúc logic trong lập trình 1 Cấu trúc tuần tự (Sequence) 1.1 Những câu lệnh phải được sắp xếp theo thứ tự Một số hướng dẫn cho việc tổ chức câ

Slide 1

Chiến lược kiểm thử Chiến lược kiểm thử Bởi: Khoa CNTT ĐHSP KT Hưng Yên Các công đoạn kiểm thử Quá trình kiểm thử có thể chia làm các giai đoạn : Kiểm

Hàm và lớp template trong Lập trình hướng đối tượng Hàm và lớp template trong Lập trình hướng đối tượng Bởi: unknown Trong phần này, chúng ta tìm hiểu

Microsoft Word - edittext_trong_android.docx

Slide 1

Chương trình dịch

Lớp đối tượng trong.net Framework Lớp đối tượng trong.net Framework Bởi: Khuyet Danh Trong chương này chúng ta sẽ tìm hiểu các lớp cơ sở mà.net cung c

Bài 7. Con trỏ Mục tiêu: 1. Luyện tập sử dụng con trỏ và địa chỉ của các biến 2. Sử dụng con trỏ khi thao tác với mảng. Giới hạn: không dùng các thư v

Microsoft Word - su_dung_sqlite_voi_php.docx

Chia sẽ ebook : Tham gia cộng đồng chia sẽ sách : Fanpage : Cộng đồng Google

Chương trình dịch

Microsoft Word - 09-TRAN CAO DE(56-63)

Quốc hội CỘNG HÒA DÂN CHỦ NHÂN DÂN LÀO Hòa bình-độc lập-dân chủ-thống nhất-thịnh vượng Số 11/QH Viêng chăn, ngày 9/11/2005 LUẬT DOA

CÀI ĐẶ T ANDROID TRÊN NETBEAN Yêu cầ u:trong quá trình cài đặ t phả i kế t nố i mạ ng,và phiên bả n này đượ c cài trên windows. 1.Download Netbean(6.7

Microsoft Word - Bai 7.1.docx

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 13. Hàm Nội dung 1. Khái niệm hàm 2. Khai báo và sử dụn

Microsoft Word - single_fragment_trong_android.docx

TCVN 11391:2016 MỤC LỤC 1 Phạm vi áp dụng Tài liệu viện dẫn Thuật ngữ, định nghĩa và các từ viết tắt Thuật ngữ và định nghĩa...

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 9. Vào ra dữ liệu trong C Các lệnh vào ra dữ liệu C cun

Ví dụ về duyệt đồ thị ưu tiên chiều sâu DFS và ứng dụng Đồ thị ví dụ: Nguyễn Hữu Tuân vimaru.edu.vn Hình 1: Đồ thị vô hướng có 8 đỉnh Với đồ thị trên,

Kiểm tra trong quản trị Kiểm tra trong quản trị Bởi: unknown Kết thúc chương này người học có thể: 1. Định nghĩa kiểm soát 2. Mô tả các phương pháp ki

Quy trinh lap lich huy dong

mid1-f18-written-sol-master

Microsoft Word - danh-sach-lien-ket-doi-trong-c.docx

Nhúng mã-cách khai báo biến Nhúng mã-cách khai báo biến Bởi: Khoa CNTT ĐHSP KT Hưng Yên Nhúng mã javascript trong trang HTML Bạn có thể nhúng JavaScri

NguyenThiThao3B

Hệ điều hành Bài tập tuần 6 1 Quản lý bộ nhớ Bài tập 1 : Xem thông tin bộ nhớ 1. Sử dụng top, ps đọc thông tin về kích thước vùng nhớ của 1 tiến trình

03. CTK tin chi - CONG NGHE KY THUAT CO KHI.doc

Nghiên cứu ứng dụng mạng nơtron nhân tạo hỗ trợ công tác chọn thầu thi công ở Việt Nam

TRƯỜnG ĐẠI HỌC BÁCH KHOA HÀ nội VIỆn CÔnG nghệ THÔnG TIn VÀ TRUYỀn THÔnG TIN HỌC ĐẠI CƯƠNG Bài 10. Các cấu trúc lập trình trong C Nội dung 1. Cấu trúc

NHÖÕNG LÔØI CHÆ DAÏY TAÂM HUYEÁT

Microsoft Word - fragment_transition_trong_android.docx

Chuỗi Chuỗi Bởi: phamvanviet truonglapvy Chuỗi (string) trong C# là một kiểu dựng sẵn như các kiểu int, long, có đầy đủ tính chất mềm dẻo, mạnh mẽ và

QUY TẮC ỨNG XỬ

Tom tat luan van - Nhung cuoi.doc

Chương trình dịch

DHS: Ban Hỗ trợ Trẻ em, Người lớn và Gia đình Những việc quý vị có thể làm đối với trường hợp ngược đãi trẻ em

CÁC PHƯƠNG PHÁP GIẢNG DẠY TÍCH CỰC

NÂNG CAO CÔNG TÁC VẬN HÀNH & BẢO DƯỠNG CÁC CÔNG TRÌNH XỬ LÝ NƯỚC THẢI TẠI HÀ NỘI, JICA Báo Cáo Cuối Kỳ Nguồn: nhóm nghiên cứu JICA Nguồn: nhóm nghiên

Chương 1:

Microsoft Word - DU THAO DIEU LE COTECCONS (DHCD 2016) - Rev

No tile

Microsoft PowerPoint - 02_Address_Book

TRĂM NGÀN TỘI ÁC CỦA VIÊT CỘNG! Tội ác chồng chất bao năm Đảng Cộng cứ tưởng ngấm ngầm dấu che Người dân ngậm đắng nín khe Khổ đau bầm dập, đói nghèo

QUỐC HỘI

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KINH TẾ MAI VIỆT DŨNG HOÀN THIỆN CÔNG TÁC THANH TRA, KIỂM TRA THUẾ TẠI CHI CỤC THUẾ HUYỆN

Source:SGGP

1 LƯU ĐÌNH NAM

Stored Procedures Stored Procedures Bởi: Khoa CNTT ĐHSP KT Hưng Yên Trong những bài học trước đây khi dùng Query Analyzer chúng ta có thể đặt tên và s

Quy tắc Ứng xử của chúng tôi Sống theo giá trị của chúng tôi

Microsoft Word - Dieu le sua doi thang doc

CÔNG BÁO/Số /Ngày QUY TRÌNH KIỂM TOÁN BÁO CÁO QUYẾT TOÁN NGÂN SÁCH NHÀ NƯỚC (Ban hành kèm theo Quyết định số 03/2013/QĐ-KTNN ng

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC KINH TẾ TRƢƠNG THỊ TUYẾT MAI PHÁT TRIỂN NGUỒN NHÂN LỰC TẠI THỜI BÁO KINH TẾ VIỆT NAM LUẬN

14 CÔNG BÁO/Số /Ngày BỘ KHOA HỌC VÀ CÔNG NGHỆ - BỘ Y TẾ BỘ KHOA HỌC VÀ CÔNG NGHỆ - BỘ Y TẾ Số: 13/2014/TTLT-BKHCN-BYT CỘNG HÒA XÃ H

000.Bia

SỞ GD & ĐT VĨNH PHÚC TRƯỜNG THPT YÊN LẠC Đề thi có 03 trang ĐỀ KSCL ÔN THI THPT QUỐC GIA LẦN 1 - LỚP 12 NĂM HỌC Bài thi: Khoa học xã hội; Mô

Bản ghi:

Nội dung Khái niệm về xử lý ngoại lệ (exception handling) Ném và bắt ngoại lệ Khai báo ngoại lệ Ném lại ngoại lệ -# Định nghĩa ngoại lệ mới trong constructor

Tài liệu tham khảo Thinking in Java, chapter 9 Java how to program, chapter 15

Lỗi và ngoại lệ Mọi đoạn chương trình đều tiềm ẩn khả năng sinh lỗi lỗi chủ quan: do lập trình sai lỗi khách quan: do dữ liệu, do trạng thái của hệ thống Ngoại lệ: các trường hợp hoạt động không bình thường như thế nào làm thế nào để có thể tiếp tục (tái) thực hiện 4

Cách xử lý lỗi truyền thống Cài đặt mã xử lý tại nơi phát sinh ra lỗi làm cho chương trình trở nên khó hiểu không phải lúc nào cũng đầy đủ thông tin để xử lý không nhất thiết phải xử lý Truyền trạng thái lên mức trên thông qua tham số, giá trị trả lại hoặc biến tổng thể (flag) dễ nhầm vẫn còn khó hiểu Khó kiểm soát được hết các trường hợp lỗi số học, lỗi bộ nhớ,... Lập trình viên thường quên không xử lý lỗi bản chất con người thiếu kinh nghiệm, cố tình bỏ qua

Ví dụ int devide(int num, int denom, int& error) { if (0!= denom) { error = 0; return num/denom; else { error = 1; return 0;

(Exception handling) trong Java trong Java được kế thừa từ C++ Dựa trên cơ chế ném và bắt ngoại lệ m m ném ngoại lệ: dừng chương trình và chuyển điều khiển lên mức trên (nơi bắt ngoại lệ) bắt ngoại lệ: xử lý với ngoại lệ Ngoại lệ: là đối tượng mang thông tin về lỗi đã xảy ra ngoại lệ được ném tự động ngoại lệ được ném tường minh

Phả hệ ngoại lệ trong Java VirtualMachineError StackOverflowError Error. OutOfMemoryError Throwable AHTError Runt imeexcept ion_ ArithmeticException NullPointerException Exception. IndexOutOfBoundsException EOFException IOException -- -- FileNotFoundException

ưu điểm của ném bắt ngoại lệ Dễ sử dụng dàng chuyển điều khiển đến nơi có khả năng xử lý ngoại lệ có thể ném nhiều loại ngoại lệ Tách xử lý ngoại lệ khỏi thuật toán tách mã xử lý sử dụng cú pháp khác Không bỏ sót ngoại lệ (ném tự động) Làm chương trình dễ đọc hơn, an toàn hơn

Ném ngoại lệ (tường minh) Ném ngoại lệ bằng câu lệnh throw if (O==denominator) { throw new Exception 0 ; else res = nominator / denominator;

Cú pháp try - catch Việc phân tách đoạn chươnc) trình thông thường và phần xử lý ngoại lệ được the hiện thông qua cú pháp try - catch Khối lệnh try Khối lệnh catch () try { // throw an exception catch (TypeOfException e) { exception-handling statements khối lệnh có khả năng ném ngoại lệ bắt và xử lý với ngoại lệ

Ví dụ try { if (0 == denom) { throw new Exception("denom = 0 else res = num/denom; catch(exception e) { System.o u t.println(e.getmessage())

Cú pháp try catch finally Có thể bắt nhiều loại ngoại lệ khác nhau bằng cách sử dụng nhiều khôi lệnh ca tch đặt kế tiếp khối lệnh catch sau không thể bắt ngoại lệ là lớp dẫn xuất của ngoại lệ được bắt trong khối lệnh ca tc h trước Khối lệnh finally có thể được đặt cuối cùng để thực hiện các công việc dọn dẹp cần thiết I f i n a l l y luôn được thực hiện dù ngoại lệ có được bắt hay không f i n a l l y được thực hiện cả khi không có ngoại lệ được ném ra 13

Cú pháp try catch finally try { catch(exceptionl el) { catch(exception2 e2) { > finally {

Ví dụ try { str = buf.readline(); nura = Integer.valueOf(str).intValue(); catch (IOException e) { System.err.printIn("IO Exception"); catch (NumberFormatException e) { System.err.println("NumberFormatException"); catch(exception e) { System.err.println(e.getMessage()); finally { buf.close(); 15

Ném ngoại lệ khỏi phương thức Không nhát thiết phải xử lý ngoại lệ trong phương thức không đủ thông tin để xử lý không đủ thẩm quyền Một phương thức muốn ném ngoại lệ ra ngoài phải khai báo việc ném ngoại lệ bang từ khóa th ro w s có thể ném ngoại lệ thuộc lớp dẫn xuất của ngoại lệ được khai báo m m 1

Ví dụ int readlnto throws IOException, NumberFormatException { str = buf.readline(); return Integer.valueOf(str).intValue()

Ví dụ try { int n = readlnt(); catch (IOException e) { System.err.println("IO Exception"); catch (NumberFormatException e) { System.err.println("NumberFormatException");

Ngoại lệ và phương thức được định nghĩa lại Phương thức được định nghĩa lại tại lớp dẫn xuất có thể không ném ngoại lệ Nếu ném ngoại lệ, chỉ có thể ném ngoại lệ giống như tại phương thức của lớp cơ sở hoặc ngoại lệ là lớp dẫn xuất của ngoại lệ được ném tại phương thức của lớp cơ sở đảm bảo bắt được ngoại lệ khi sử dụng cơ u m m V «/ chế đa hình 19

Ví dụ class A { public void methoda() throws RuntimeException { class B extends A { public void methoda() throws ArithmeticException { class C extends A { public void methoda() throws Exception { class D extends A { public void methoda() {

Ví dụ: A a = new B (); try { a.methoda () ; catch (RuntimeException e) { 21

Ném lại ngoại lệ Sau khi bắt ngoại lệ, nếu thấy cần thiết chúng ta có thể ném lại chính ngoại lệ vừa bắt được để cho chương trình mức trên tiếp tục xử lý try {... catch (Exception e) { System.out.println(e.getMessage()); throw e; 22

Lần vết ngoại lệ stacktrace Có thể sử dụng phương thức printstacktrace() để lần vết vị trí phát sinh ngoại lệ debug chương trình

public class Test4 { void m e t hodao throws Exception { methodb(); throw new Exception 0; void m e t hodbo throws Exception { méthode(); throw new Exception 0 ; > void méthode 0 throws Exception { throw new Exception 0 ; public static void main(string[] args) { Test4 t = new Test4(); try { t.methoda(); catch(exception e) { e.printstacktrace();

Ném ngoại lệ từ main () Nếu không có phương thức nào bắt ngoại lệ, ngoại lệ sẽ được truyền lên phương thức main() và được cần được xử lý tại đây. Nếu vẫn không muốn xử lý ngoại lệ, chúng ta có thể để ngọại lệ truyền lên mức điều khiển của máy ảo bằng cách khai báo main() ném ngoại lệ chương trình sẽ bị dừng và hệ thống sẽ in thông tin về ngoại lệ trên Console (printstacktrace ()) 25

Ví dụ import java.io.*; public class Echo { public static void main(string[] args) throws IOException { InputStreamReader reader; BufferedReader bufreader; reader = new InputStreamReader(System.in) bufreader = new BufferedReader(reader); String s ; while( null!= (s = bufreader.readline()) System.out.println(s);

Hai loại ngoại lệ Java phân biệt hai loại ngoại lệ là ngoại lệ cần kiểm tra và ngoại lệ không cần kiểm tra Ngoại lệ cần kiểm tra: chương trình dịch luôn kiểm tra xem chúng ta có viết code xử lý với các ngoại lệ này không (try catch/ throws) loexception Ngoại lệ không cần kiểm tra: các ngoại lệ có thể loại trừ nếu viết chương trình tốt hơn RuntimeException 27

Ví dụ: Checked Exception InputStreamReader reader; BufferedReader bufreader; reader = new InputStreamReader(System.in) bufreader = new BufferedReader(reader); try { String s = bufreader.readline0 ; catch (IOException e) {

Ví dụ: Unchecked Exception int numl = Integer.ValueOf(strl).intValue 0 ; int num2 = Integer.ValueOf(str2).intValue0 ; int num3 = numl / num2 ; Hầu hết các ngoại lệ thuộc lóp RuntimeException được hệ thống ném tự động lỗi số học lỗi chỉ số

Hoán đổi ngoại lệ CÓ thể đổi ngoại lệ cần kiểm tra thành ngoại lệ không cần kiểm tra chưa biết nên làm gì void wrapexception() { try { throw new IOException(); catch (IOException e) { throw new RuntimeException(e);

try { wrapexception() ; catch (RuntimeException e) { try { throw e.getcause0 ; catch (IOException el) { 31

Tự định nghĩa ngoại lệ ^ Chúng ta có thể tạo lớp ngoại lệ để phục vụ các mục đích riêng Lớp ngoại lệ mới phải kế thừa từ lớp Exception hoặc lơp dẫn xuất của lớp này Có thể cung cấp hai constructor constructor mặc định (không tham số) constructor nhận một tham số string và truyền tham số này cho phương thức khởi tạo của lớp cơ sở 32

Ví dụ class SimpleException extends Exception { class MyException extends Exception { public MyException() { public MyException(String msg) { super(msg);

Khởi tạo đối tượng và xử lý ngoại lệ Làm thế nào để thông báo khi hàm khởi tạo đối tượng gặp lỗi không có giá trị trả lại Một cách là khởi tạo với một trạng thái đặc biệt và hi vọng sẽ có mã chương trình kiểm tra trạng thái này Cách hợp lý hơn là ném ngoại lệ 34

class InputFile { public InputFile(String fname) throws IOException { try { InputFile fin = new InputFile("data.txt") ; catch (IOException e) { System.err.println(e.getMessage);

Bài tập và thực hành Tìm hiểu về phả hệ ngoại lệ của Java Thực hành ném và bắt ngoại lệ khai báo phương thức ném ngoại lệ constructor ném ngoại lệ tự định nghĩa ngoại lệ V- J