LỖI LÚC THỰC THI và QUÁ TRÌNH GOM RÁC

Similar documents
Exceptions. Outline 7/31/2012. Exceptions. Exception handling is an important aspect of objectoriented. Chapter 10 focuses on:

Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

HƯỚNG DẪN SỬ DỤNG HỆ THỐNG CẬP NHẬT CHỨNG THƯ SỐ HOTLINE:

Tài liệu hướng dẫn: Stored Procedure

HƯỚNG DẪN CÀI ĐẶT PHẦN MỀM DIỆT VIRUS AVIRA

TÀI LIỆU THỰC HÀNH MÔN CƠ SỞ DỮ LIỆU NÂNG CAO

HƯỚNG DẪN CÁCH SỬ DỤNG WINDOWS MOVIE MAKER

Internet Protocol. Bởi: Phạm Nguyễn Bảo Nguyên

BÀI TẬP THỰC HÀNH LẬP TRÌNH WINDOWS C#

STACK và QUEUE. Lấy STACK

Cài đặt và cấu hình StarWind iscsi trên Windows. iscsi SAN là gì?

BÀI 1: VBA LÀ GÌ? TẠO MACRO, ỨNG DỤNG CÁC HÀM TỰ TẠO (UDF), CÀI ĐẶT ADD-INS VBA là gì?

Giáo trình này được biên dịch theo sách hướng dẫn của Sun Light. Vì là hướng dẫn kỹ thuật, trong này những thuật ngữ kỹ thuật bằng tiếng Anh tôi chỉ

Bộ môn MMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

B5: Time to coding. Tới thư mục src/example.java và thay đổi nội dung file như sau: Mã: package at.exam;

Bài Thực hành Asp.Net - Buổi 1 - Trang: 1

HƯỚNG DẪN SỬ DỤNG PLESK PANEL

Cụ thể những công việc mà AndroidManifest.xml thực hiện: - Đặt tên cho Java package của ứng dụng.

Chương 6. Transport Layer. Tài liệu : Forouzan, Data Communication and Networking

BELGIUM ONLINE APPOINTMENT

Tình huống 1: PPPoE với Username và Password

Kỹ thuật thu nhỏ đối tượng trong Design (Layout)

Hướng dẫn cài đặt FPT

Bài 10: Cấu trúc dữ liệu

Chương 5. Network Layer. Phần 1 - Địa chỉ IPv4. Tài liệu : Forouzan, Data Communication and Networking

Online Appointment System will work better with below conditions/ Hệ thống đặt hẹn online sẽ hoạt động tốt hơn với điều kiện sau đây:

ĐỌC, GHI XML VỚI C# TRONG ADO.NET --- SỬ DỤNG VISUAL STUDIO

Chương 5. Network Layer 19/09/2016 1

CẤU TRÚC DỮ LIỆU NÂNG CAO

Entity Framework (EF)

Ôn tập Thiết bị mạng và truyền thông DH07TT - Lưu hành nội bộ (không sao chép dưới mọi hình thức)

Bài 13: C++11. EE3490: Kỹ thuật lập trình HK1 2017/2018 TS. Đào Trung Kiên ĐH Bách khoa Hà Nội

Nhấn nút New để tạo 1 biến mới Trang 17

HƢỚNG DẪN TRIỂN KHAI KASPERSKY - MOBILE DEVICE MANAGEMENT

Nội dung chính của chương. Các công nghệ đĩa cứng Cấu tạo vật lý của đĩa cứng Cấu tạo logic của đĩa cứng Cài đặt đĩa cứng như thế nào?

LÂ P TRI NH WEB ASP.NET

SIEMENS INDUSTRIAL NETWORKS

HƯỚNG DẪN SỬ DỤNG ĐẦU GHI H.264 DVR VISION VS (4CH - 8CH - 16CH)

NHẬP MÔN LẬP TRÌNH KHOA HỌC DỮ LIỆU. Bài 10: Thư viện Pandas (2)

TỔNG QUAN VỀ.NET VÀ C#

SIMULATE AND CONTROL ROBOT

Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính

Bài tập lớn số 1. Giả lập bộ định thời

Dọn "rác" Windows 7 vào dịp cuối năm

BẢO MẬT TRONG SQL SERVER

Chương 7. Application Layer. Tài liệu : Forouzan, Data Communication and Networking

CHƯƠNG 2: CÁC ĐẶC ĐIỂM VỀ MÔI TRƯỜNG PHÁT TRIỂN (IDE)

Tạo repository mới. The working tree. The staging index. Lệnh git init tạo một repository loại git. tại thư mục hiện tại: $ git init

HỢP ĐỒNG MUA BÁN HÀNG HÓA QUỐC TẾ GV: NGUYỄN THỊ BÍCH PHƯỢNG

GV: Phạm Đình Sắc or

BÀI 6 LÀM VIỆC VỚI THÀNH PHẦN MỞ RỘNG CỦA CSS3

LẬP TRÌNH WINDOWS FORM VỚI CÁC CONTROL NÂNG CAO (Các control trình bày dữ liệu dưới dạng danh sách)

PHÁT TRIỂN ỨNG DỤNG WEB

Mô hình dữ liệu quan hệ (Relational data model)

ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN

Tạo Project với MPLAB

NHÚNG. Vi ñiều khiển BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 2

Đa ngôn ngữ (Internationalization) trong Servlet

Cập nhật ResultSet trong JDBC

Lab01: M V C Lưu ý: Để thực hành, các bạn phải cài Visual Studio 2013 trở lên mới hỗ trợ MVC5.

BÀI THỰC HÀNH SỐ 1. Quản trị tập tin: 1/ Tạo các thư mục sau: Bài tập thực hành linux Linuxlab. bt1 bt11 bt111. bt121. bt12. bh1 bh11 bh111.

Lecture 12. Trees (1/2) Nội dung bài học:

Tính kế thừa-2. Bởi: Thanh Hiền Vũ. Định nghĩa lại các thành viên lớp cơ sở trong một lớp dẫn xuất:

Kích hoạt phương thức xa (RMI- Remote Method Invocation )

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG HOSTING PLESK PANEL

Môn Học: Cơ Sở Dữ Liệu 2. Chương 3 LẤY DỮ LIỆU TỪ NHIỀU NGUỒN

GIẢI THUẬT ĐỊNH TUYẾN (ROUTING ALGORITHM)

Parallels Cloud Server 6.0

Tìm hiểu Group Policy Object và các ví dụ

Các kiểu định địa chỉ họ MSC-51

Bài thực hành số 2 QUYỀN và ROLE

Phần 2. SỬ DỤNG POWERPOINT ĐỂ CHUẨN BỊ NỘI DUNG TRÌNH BÀY

Lập trình chuyên nâng cao. Lập trình phân tán (Distributed computing

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

I. Hướng Dẫn Đăng Nhập:

BÀI LAB ĐỔI TÊN DOMAIN

LAB IP SLA Bài 1. Bùi Quốc Kỳ ***

Time Picker trong Android

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

LINQ TO SQL & ASP.NET

Bài 7: Các cấu trúc điều khiển

KIẾN TRÚC MÁY TÍNH. Giảng viên: ThS. Phan Thanh Toàn. v

dụng một chính sách, điều này giúp dễ dàng quản lý và cung cấp tính năng Load Balancing (cân bằng tải) phục vụ tốt hơn các yêu cầu của tổ chức.

Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ. Những hỗ trợ tiên tiến khác của SQL. Đỗ Thanh Nghị

Google Search Engine. 12/24/2014 Google Search Engine 1

Phần 1: Hướng dẫn sử dụng PictureBox tạo Slide Show

Bài tập căn bản Visual Basic.Net Vòng lặp. txtn. txtketqua. btntinh. txtn. txtketqua. btntinh. Trang 1

1 Bước 1: Test thử kit LaunchPad.

3 cách Backup Profile trong Windows 7

MA NG MA Y TI NH (Computer Networks)

BÀI GIẢNG CHƯƠNG 3 GIAO TIẾP KẾT NỐI SỐ LIỆU

NỘI DUNG ÔN TẬP MÔN HỆ CƠ SỞ DỮ LIỆU

B3: Bên khung Package Explore bên trái đi tới thư mục res, bạn sẽ thấy có 3 thư mục con:

MỤC LỤC. Giáo trình Thiết kế web Trang 1

Bài 10. Cấu trúc liên nối. khác nhau được gọi là cấu trúc liên nối. nhu cầu trao đổi giữa các module.

CHƯƠNG 5: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG VB.NET

Module2: Lập trình Shell và C Quản lý tiến trình A. TÓM TẮT LÝ THUYẾT:

HƯỚNG DẪN QUẢN TRỊ HỆ THỐNG

Transcription:

LỖI LÚC THỰC THI và QUÁ TRÌNH GOM RÁC Exception Garbage Collection Slide 1/41 1

Mục tiêu! Giải thích được lỗi cú pháp và lỗi thực thi chương trình.! Giải thích được mô hình đối tượng Exception của Java.! Giải thích được cú pháp bẫy lỗi bằng try...catch... finally.! Sử dụng được throw và throws trong code,! Tự định nghĩa được Exception.! Giải thích được cơ chế gom rác của Java. Slide 2/41 2

Nội dung - Các loại lỗi của chương trình - Cấu trúc các lớp quản lý lỗi của Java. - Bẫy lỗi bằng try...catch...finally - Lan truyền lỗi - Xuất Exception - Tự định nghĩa Exception - Cơ chế gom rác Slide 3/41 3

6.1- Các loại lỗi của chương trình & BEGIN Syntax error Bài toán Hiện thực Code Compile Wrong result No Syntax error END Correct result Run Chương trình? Run-time error ( Exception ) Slide 4/41 Exception-Gom Rác 4

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. Slide 5/41 5

Cấu trúc các class quản lý lỗi của Java Object Throwable Error Exception AWTError ThreadDead SQLException ClassNotFoundException RuntimeException ArithmeticException NullPointerException Khi 1 error/exception xẩy ra, ta nói rằng nó bị thrown (throw) NumberFormatException Slide 6/41 6

Lớp Throwable! Các lớp Exception đều được dẫn ra từ lớp này.! Chứa các hành vi giúp truy xuất thông tin về lỗi như: " nội dung mô tả lỗi : getmesage(), tostring() " nội dung stack lúc gây lỗi: getstacktrace(), printstacktrace(), "... Slide 7/41 7

Một số lớp quản lý lỗi của Java class Giải thích Exception Lớp nền của các run-time error RuntimeException ArithmeticException IllegalArgumentException ArrayIndexOutOfBoundsException NullPointerException SecurityException ClassNotFoundException Lớp nền của nhiều lớp run-time error Lỗi do thực thi một phép toán Lỗi sai đối số của hàm Lỗi do chỉ số ngoài tầm của mảng Lỗi do truy xuất một đối tượng mà chưa khởi tạo Lỗi do truy cập bị cấm Lỗi do không tìm thấy file.class Slide 8/41 8

Một số lớp quản lý lỗi của Java Lớp NumberFormatException IOException FileNotFoundException EOFException IllegalAccessException NoSuchMethodException InterruptedException Giải thích Lỗi do không đúng dạng số Lỗi xuất nhập Lỗi do không tìm thấy file Lỗi do cố truy cập nội dung 1 file khi đã ở cuối file Lỗi do truy cập 1 class bị cấm Lỗi do viết sai tên hành vi Lỗi do ngắt ngang 1 luồng lệnh đang được thực thi Slide 9/41 9

Bẫy lỗi bằng try...catch...finally! Bẫy lỗi bằng cú pháp: try... catch... finally... try { < các lệnh có khả năng gây lỗi> } 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> } Slide 10/41 10

Ví dụ: 11

Áp dụng:! Hãy bẫy lỗi cho phương thức sau: 12

1 giải pháp: 13

Bẫy lỗi bằng try...catch...finally! Dự đoán lỗi: " Tại một thời điểm, developer có thể dự đoán chính xác các lỗi có thể xẩy ra. Thí dụ: Nhập dữ liệu từ bàn phím vào 1 số thông qua hộp thoại, có 2 tình huống: người dùng không nhập (user cancel), người dùng nhập chữ. " Có thể tổng quát hoá các lỗi nhờ lớp cha (Exception) để quản lý chung. Slide 14/41 14

Ví dụ! Bẫy lỗi cho đoạn chương trình sau: 15

Bẫy lỗi- Thí dụ Slide 16/41 16

Bẫy lỗi Thí dụ Slide 17/41 17

Bẫy lỗi mức tổng quát Dùng đối tượng mức tổng quát ( lớp Exception). Xem lại hình vẽ về cấu trúc quản lý lỗi của Java trong các slide trước Slide 18/41 18

Bẫy lỗi tham khảo mảng ngoài tầm chỉ số Mảng 5 phần tử mà lại truy cập a[10] Bẫy lỗi mức tổng quát Slide 19/41 19

6.4- Lan truyền lỗi! Exception propagation! Lỗi lan truyền từ trong ra cho đến khi gặp bẫy lỗi hoặc tới main và ứng dụng bị ngưng. A() catch(...) B() Chiều lan truyền lỗi Chiều gọi hàm C() D() Exception Slide 20/41 20

Lan truyền lỗi- Thí dụ 1 main(...) output(...) getpos(...) Slide 21/41 21

Chặn lan truyền lỗi- Thí dụ Bẫy lỗi và chương trình tiếp tục Slide 22/41 22

Chặn lan truyền lỗi- Ví dụ 2! Xem Propagation.java Sách Java Software Solution 23

Gọi hành vi có xuất lỗi trong code Chương trình gọi Calculator của MS Windows trong Java Hành vi exec(string) của lớp RunTime có throw một exception. Khi sử dụng một tác vụ có xuất exception trong khai báo một method, trình biên dịch sẽ nhắc nhở chúng ta rằng cần phải bẫy lỗi này trong code Xem CallExec.java Slide 24/41 24

6.5- Xuất Exception! Exception thường do JVM xuất ra.! Code chương trình có thể chủ động tạo ra 1 đối tượng exception bằng từ khóa throw! Cú pháp : throw new <Exception name( Message )>! Phương thức có xuất Exception thì phải dùng throws khai báo loại Exception mà nó xuất, ở đầu phương thức Slide 25/41 25

Xuất Exception! Xem themnv_throwexception.java Xem thêm Exception_throwFunction.java themnv_throwexception.java Slide 26/41 26

Checked exceptions! Một exception có thể thuộc loại checked hoặc unchecked.! checked exception phải được bắt bởi một phương thức hoặc phải được liệt kê trong mệnh đề throws của bất kỳ phương thức mà có ném hoặc lan truyền nó.! throws clause được thêm vào cuối tiêu đề phương thức.! Trình biên dịch sẽ phát sinh error nếu checked exception không được bắt hoặc xác nhận trong throws clause. 27

Unchecked exceptions! unchecked exception không cần xử lý tường minh (mặc dù ta có thể xử lý nó).! Trong Java, exceptions thuộc loại unchecked chỉ có objects kiểu RuntimeException hoặc kiểu lớp con của nó.! Errors tương tự như RuntimeException vì: " Errors không nên caught " Errors không đòi hỏi có throws clause Xem Check_or_uncheck.java 28

Hierarchy of Exception classes 29

6.6- Tự định nghĩa Exception! Người lập trình có thể tự định nghĩa một loại Exception dựa trên các loại Exception đã có.! Phương pháp khai báo một user-defined exception: " Tên lớp exception " Tên lớp cha " Thông báo lỗi. Slide 30/41 30

User-defined exceptions! Nguyên tắc viết exception classes: " Tất cả exceptions phải là con của Throwable " Nếu bạn muốn viết một checked exception, bạn cần extend the Exception class " Nếu viết runtime exception, cần extend the RuntimeException class. 31

Tự định nghĩa Exception Xem MyException.java Slide 32/41 32

Bài tập Cho mô hình Person<--- Student (Person có họtên, CMND, Student có MSSV, điểmtb, nhapthôngtin())! Viết class Student, bẫy lỗi khi nhập điểm sai kiểu (xử lý: thông báo, nhập lại).! Viết class QuảnLý chứa danh sách Person, có thêm vào danh sách, xuất danh sách. Ném lỗi khi danh sách đầy, catch lỗi ở main (xử lý: thông báo, nới rộng danh sách?). 33

Cơ chế gom rác! Rác: Đối tượng không còn được tham khảo đến.! Garbage Collector: Trình gom rác, là một luồng được thực thi khi máy rảnh hoặc là khi có yêu cầu cấp bộ nhớ mà bộ nhớ không còn đủ.! Application chủ động gọi trình gom rác bằng: System.gc(); Tuy nhiên, GC có độ ưu tiên kém, nếu JVM rảnh thì GC mới thực thi.! Có thể thông qua môi trường thực thi(runtime environment) để gom rác tức thì Slide 34/41 34

Gom rác: Đối tượng và tham khảo đến đối tượng! Java cung cấp phương thức finalize() họat động như 1 Destructor của C++ để hủy các quá trình trước khi qúa trình trả điều khiển về cho hệ điều hành.! Chú ý: Chỉ có đối tượng mới bị gom rác chứ tham khảo đến đối tượng không bị gom.! Cú pháp: protected void finalize() throws Throwable 1000 1000 rác obj 1000 0 0 A obj; obj = new A(...); obj = null; Slide 35/41 35

Cơ chế gom rác- Nhận diện rác {... Object a = new Object(); Object b= a; a= null; } Đối tượng vừa tạo đã là rác chưa? {... Object a = new Object(); a= null; } Đối tượng vừa tạo đã là rác chưa? {... Object a = new Object(); // đối tượng 1 a= new Object (); // đối tượng 2 } Đối tượng 1đã là rác chưa? Slide 36/41 36

Thí dụ: Truy xuất môi trường thực thi và Chủ động gom rác Slide 37/41 37

Lớp RunTime! Mô tả môi trừơng của máy ảo.! Cho phép gọi 1 ứng dụng. Slide 38/41 38

Lớp RunTime Gọi ứng dụng của OS xem CallExec.java Slide 39/41 39

Truy cập lớp System Ba đối tượng thành phần: in : Bàn phím out, err : màn hình Các nhóm hành vi: - Truy xuất môi trường (env) - Truy xuất thuộc tính (property) - Truy xuất thời gian (Time) Slide 40/41 40

Thí dụ testdatetime.java Slide 41/41 41

Tóm tắt! 2 loại error: syntax error, run-time error.! run-time error được gọi là exception.! Khi một exception, JVM xuất động một object (chứa mô tả về exception này).! Lớp trên cùng của các error là lớp Throwable ( lớp cho các đối tượng xuất động của JVM)! Có rất nhiều Exception để trong các gói thư viện của Java. Slide 42/41 42

Tóm tắt! Bẫy lỗi bằng try... catch... finally! Nếu hành vi chứa một code có thể gây lỗi, chỉ thị bằng throws! Trong code của hành vi, có thể xuất một exception bằng throw new ExceptionClass ( Msg );! Tự định nghĩa một Exception là khai báo một lớp kế thừa một Exception đã có. Slide 43/41 43

Tóm tắt! Java cung cấp sẵn một garbage collector.! Chủ động gọi GC bằng System.gc() hoặc thông qua một đối tượng RunTime.! class RunTime chứa thông tin về môi trường thức thi Java app.! Dữ liệu ngày tháng có thể dùng java.util.date, hoặc GregorianCalendar.! Có thể thông qua đối tượng System để lấy thời gian hiện hành của máy (theo mili, nano second). Slide 44/41 44

Bài tập - cài đặt bẫy lỗi! Viết class PhanSo - tuso: int - mauso: int + constructor +gettuso(): int +settuso(int): void +getmauso(): int +setmauso(int): void +nhapphanso(): void + nhanphanso(phanso o): PhanSo! Xác định lỗi, phương án bẫy, cài đặt class 45

Bài tập! Tạo lớp mô tả và thao tác trên mảng các số int có quản lý lỗi truy cập. Các tác vụ: các constructor: chuẩn, cấp phát mảng chứa tối đa MaxN phần tử, sao chép mảng đã có, Nhập, lấy phần tử thứ i, xuất, sắp xếp tăng, sắp xếp giảm, chèn trị x vào vị trí thứ i,...! Tạo lớp mô tả và thao tác trên ma trận các số int có quản lý lỗi truy cập. Slide 46/41 46

Ôn thi GK! Làm lại tất cả các bài thực hành có viết thừa kế, abstract class, interface, static member, bẫy lỗi, overriding tostring, equals, clone, interface Comparable. 47