Tải bản đầy đủ (.ppt) (30 trang)

BÁO CÁO BÀI TẬP LỚN Môn Lập Trình Java Tìm hiểu về cơ chế bắt lỗi (Exception Handling) trong Java

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (151.5 KB, 30 trang )


BÁO CÁO BÀI TẬP LỚN
Môn Lập Trình Java
Tên đề tài :
- Tìm hiểu về cơ chế bắt lỗi (Exception Handling)
trong Java
- Tìm hiểu về lớp File và interface Serializable
- Viết chương trình đọc và ghi tệp chứa các đối
tượng Sinh viên có các thông tin về mã sinh viên,
họ tên và ngày sinh.

Nhóm sinh viên thực hiện :
Nguyễn Thị Hồng Anh
Nguyễn Thị Thu Hải
Hoàng Thị Hoa
Hoàng Thị Nga
Nguyễn Thị Thu Quỳnh

Nội dung báo cáo :
I. Cơ chế bắt lỗi (Exception Handling)
1.Giới thiệu một lỗi (exception)
2.Mục đích của việc xử lý lỗi
3.Mô tả mô hình xử lý lỗi
4. Các khối ‘try’ và ‘catch’
5. Khối “finally”
6. Các ngoại lệ được định nghĩa với lệnh ‘throw’ và
‘throws’
7. Danh sách các ngoại lệ

II. Lớp File
1.Giới thiệu lớp file


2.Một số phương thức trong lớp File
3.Thư mục
4.FilenameFiter
5.listFiles()
III. Lớp Interface Serializable

Nội dung chi tiết :
I. Cơ chế bắt lỗi(Exception Handling
1. Giới thiệu một lỗi :
Exception là một lỗi đặc biệt. Nó thường
xuất hiện vào lúc thực thi chương trình. Các
trạng thái không bình thường xảy ra trong
khi thi hành chương trình tạo ra các
Exception Những trạng thái này không được
biết trước khi ta xây dựng chương trình.
Ngôn ngữ Java cung cấp bộ máy xử lý lỗi
rất tốt. Nó làm hạn chế tối đa trường hợp hệ
thống bị phá vỡ hay ngắt đột ngột.

Các lỗi trong một chương trình
+ Lỗi cú pháp :Người lập trình có thể phát hiện và sửa
lỗi dựa vào trình biên dịch, đây là lỗi dễ phát hiện và sửa
chữa.

+ Lỗi thuật toán : là lỗi khó phát hiện và sửa chữa nhất.
+ Lỗi thực thi : là một lỗi khách nhưng có thể kiểm soát
được nhờ cơ chế bắt lỗi trong Java.

2. Mục đích của việc xử lý lỗi :
Một chương trình nên có cơ chế xử lý lỗi thích

hợp. Nếu không, chương trình sẽ ngắt khi hệ
thống xảy ra lỗi.
Trong trường hơp đó, tất cả các nguồn tài nguyên
mà hệ thống trước kia phân phối sẽ được di dời
trong cùng trạng thái. Điều này làm gây lãng phí
nguồn tài nguyên. Để tránh trường hợp này, tất
cả các nguồn tài nguyên mà hệ thống phân phối
nên được thu hồi lại. Tiến trình này đòi hỏi cơ
chế xử lý lỗi thích hợp.

3. Mô hình xử lý lỗi :
Mô hình xử lý lỗi dựa trên 3 hoạt động chính
- Đặc tả ngoại lệ: là khai báo cho trình biên dịch
biết là phương thức này có thể gây ra ngoại lệ
lúc thi hành. Để khai báo ta dùng từ khóa throws
trong khai báo phương thức.
- Loại bỏ một ngoại lệ: một phương thức sau
khi đã khai báo thì có thể ném ra các đối
tượng.
- Bắt lỗi: mỗi khi lỗi xảy ra sẽ được phát hiện và
đưa vào một khối để xử lý.


Vấn đề của người lập trình là phải biết
được đoạn mã nào có thể gây ra lỗi.Khi
đã khoanh vùng được đoạn mã có thể gây
ra lỗi họ sẽ đặt đoạn mã đó trong khối
“try”, và đặt đoạn mã xử lý lỗi trong khối
“catch”.




Cấu trúc của mô hình xử lý ngoại lệ

try

}

// Các lệnh có khả năng gây lỗi

{

catch ( TypeException1 ex)

}

// Mã đựơc thực thi khi một ngoại lệ TypeException1 đựơc phát sinh trong khối try

{

catch ( TypeException2 ex)

}

// Mã đựơc thực thi khi một ngoại lệ TypeException2 đựơc phát sinh trong khối try

{




catch ( TypeExceptionN ex)

}

// Mã đựơc thực thi khi một ngoại lệ TypeExceptionN đựơc phát sinh trong khối try

{

finally

}

// khối lệnh nay luôn được thực hiện cho dù ngoại lệ có xảy ra trong khối try hay ko

{

4. Các khối “try” và “catch” :
+ Khối try - catch được sử dụng để thi hành mô hình
catch và throw của việc xử lý lỗi. Khối try chứa một
bộ các lệnh có thể thi hành được. Các lỗi có thể bị
chặn khi thi hành những câu lệnh này. Phương thức
dùng để chặn lỗi có thể được khai báo trong khối
try. Một hay nhiều khối catch có thể theo sau khối
try. Các khối catch này bắt các lỗi trong khối try.
+ Để bắt giữ bất cứ một lỗi nào, ta phải chỉ ra được
kiểu lỗi là Exception : catch(Exception e)
+ Khi lỗi bị bắt giữ không biết thuộc kiểu nào chúng
ta có thể sử dụng lớp Exception để bắt lỗi đó.

Chương trình minh họa cách sử dụng các khối

“try” và “catch”
class TryClass
}
public static void main(String args][)
}
int b=0;
try
}
System.out.println(20/b);
{
catch(ArithmeticException a)
}
System.out.println(“Khong the thuc hien phep chia cho 0”);
{
{
{

+ Khi sử dụng các “try” lồng nhau, khối “try”bên
trong được thi hành đầu tiên . Bất kỳ lỗi nào bị chặn
trong khối “try” sẽ bị bắt giữ trong khối “catch” theo
sau. Nếu khối catch thích hợp không được tìm thấy
thì các khối “catch” của các khối “try” bên ngoài sẽ
được xem xét. Nếu không, Java Runtime
Environment xử lý các lỗi.

+ Khi các khối try được sử dụng mà không có các
khối catch nào, chương trình sẽ biên dịch mà không
gặp sự cố nào nhưng sẽ bị ngắt khi thực thi. Bởi vì
đã xảy ra lỗi khi thực thi chương trình.


5. Khối “finally” :
+ Khối “finally “ thực hiện tất cả các công
việc thu dọn khi một lỗi xảy ra
+ Có thể sử dụng để kết hợp với khối “try”
+ Khối này chứa các câu lệnh thu hồi tài
nguyên về cho hệ thống hay lệnh in ra các
câu thông báo
Các lệnh này bao gồm:

Đóng tập tin

Đóng lại bộ kết quả

Đóng lại các kết nối được tạo ra trong cơ sở dữ
liệu

+ Khi finally là tùy ý, khối này được đặt sau
khối catch. Hệ thống sẽ duyệt từ câu lệnh
đầu tiên của khối finally sau khi gặp lệnh
return hay lệnh break được dùng trong khối
try
+ Khối “finally bảo đảm lúc nào cũng được
thực thi, bất chấp có lỗi nào xảy ra hay
không

Minh họa sự hình thành các khối
“try”,”catch” và “finally”:
try block
catch blockfinally block
finally block

No Exception Exception occurs

6. Các ngoại lệ được định nghĩa với lệnh
‘throw’ và ‘throws’
+ Trong exception còn 1 kiểu là ngoại lệ tự định
nghĩa với throw và throws
Các ngoại lệ bị chặn với sự trợ giúp của từ khóa
throw . Từ khóa throw chỉ ra 1 exception vừa
xảy ra, Từ khóa‘throws’ để xử lý nhiều loại ngoại
lệ. Một phương thức đơn có thể chặn nhiều loại
lỗi và để xử lý những lỗi này, ta cần cung cấp
một danh sách các lỗi mà phương thức chặn
trong phần định nghĩa của phương thức.
Public class Example

7. Danh sách các ngoại lệ:
Lỗi Không trả lời
RuntimeException Lớp cơ sở cho nhiều lỗi java.lang
ArthmeticException Trạng thái lỗi về số, ví dụ như chia cho
0
IllegalAccessException Lớp không thiết truy cập
IllegalArgumentException Phương thúc nhận một đối số không
hợp lệ
ArrayIndexOutOfBoundsExeptio
n
Kích thước của mảng lớn hơn 0 hay lớn
hơn kích thước thật của mảng
NullPointerException Khi muốn truy cập tới đối tượng null
SecurityException Việc thiết lập cơ chế bảo mật không
được hoạt động

ClassNotFoundException Không thể truy nạp lớp yêu cầu

II. Lớp File :
1. Giới thiệu lớp file
2. Một số phương thức trong lớp File
3. Thư mục
4. FilenameFiter
5. ListFiles()

1. Giới thiệu về lớp File :
+ Lớp File giao tiếp trực tiếp các file và hệ thống
file. Lớp File không xác định thông tin mang về
hoặc được lưu trữ trên các tập tin như thế nào.
+ Một đối tượng File dùng giám sát và thao tác
thông tin tương ứng với một tập tin trên đĩa như
thời gian, ngày tháng, đường dẫn thư mục và cây
thư mục con…
+ Lớp File không phục vụ cho việc nhập/xuất dữ
liệu trên luồng. Lớp File thông thường dùng để
biết được các thông tin chi tiết về tệp tin cũng như
thư mục (tên, ngày giờ tạo, kích thước,….).

2. Một số phương thức trong lớp
File:
+ Lớp File có các hàm khởi tạo sau:
File(String )
File(String String )
File(File  String )
Trong đó,  là tên đường dẫn của tập tin, là tên
tập tin, và  là một đối tượng File xác định thư mục.

+ File định nghĩa nhiều phương thức lấy các thuộc tính chuẩn
của đối tượng File. Ví dụ, getName() trả về tên của file,
getParent() trả về tên của thư mục cha và exists() trả về true
nếu file tồn tại. Tuy vậy, lớp File không có tính đối xứng. Tức là
có nhiều phương thức cho phép bạn tham chiếu các thuộc tính
của một đối tượng file đơn giản, nhưng không có phương thức
tương ứng để thay đổi các thuộc tính đó

Một số phương thức quan trọng :
Phương thức Mô tả
public void deleteOnExit() Xóa file tương ứng với đối tượng gọi
hàm khi máy ảo Java kết thúc
public boolean isHidden() Trả về true nếu file là ẩn. Ngược lại là
false
public boolean
setLastModified(long )
Đặt thời gian của tập tin theo là
số mili giây kể từ 0h00 ngày 01/01/1970
theo mốc định vị toàn cầu(UTC).
public boolean
setReadOnly(long )
Đặt thuộc tính tập tin là read-only
public String getPath() Lấy đường dẫn của tập tin
public String][ list() Lấy danh sách tên các tập tin và thư mục
con của đối tượng File đang xét và trả về
trong một mảng

Ví dụ minh họa một số phương thức của File :





 !"

#$%&'''(')*+, /&"
&01&2#0""
&1&2#""
&31&2#3""
&1&2#""
#4"5&4&1&4&"
#6"5&%&1&%&"
#+"5&&1&&"
&&2#7"5&&1&&2&&""
#"5&&1&
&"
#3"5&&1&&"
&1&2#8""
&91&2#"2&:&"
;
;

3. Thư mục :
+ Thư mục là lớp File chứa danh sách các tập tin
và thư mục khác.
+ Hai hàm tiện ích khác của File là mkdir() và
mkdirs(). Hàm mkdir() tạo ra một thư mục, trả về
true nếu thành công. Trường hợp xảy ra lỗi khi
đường dẫn xác định trong đối tượng File đang tồn
tại, hoặc là đường dẫn không gồm tên thư mục
cần tạo của File chưa tồn tại.

+ Để tạo ra một thư mục không cần có đường dẫn
đã tồn tại ta dùng hàm mkdirs(), nó tạo ra một thư
mục và tất cả các thư mục cha của thư mục đó có
mặt trong đường dẫn của File.

4. FilenameFilter :
+ Khi bạn tạo đối tượng File và đặt nó là thư mục,
hàm isDirectory() trả về true. Trong trường hợp
đó, bạn có thể gọi list() để trích danh sách các file
và thư mục khác bên trong. Hàm này có hai dạng:
- String][ list()//Danh sách các tập tin trả về trong
mảng các String
- String][ list(FilenameFilter FFObj)
Trong dạng thứ hai, FFObj là đối tượng của lớp
thể hiện giao diện FilenameFilter. Lớp này định
nghĩa chỉ một phương thức đơn giản accept(), nó
gọi một lần cho từng tập tin trong một danh sách.
Dạng mở rộng của hàm này :
Boolean accept(File drectory,Stringfilename)

×