BÁO CÁO BÀI TẬP LỚNMô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à
Trang 1BÁ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
Trang 2Nhóm sinh viên thực hiện
Trang 3Nộ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ệ
Trang 4II 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
Trang 5Nộ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
.
Trang 6Các lỗi trong một chương trình
.
+
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
.
Trang 72 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
Trang 8
3
-
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
Trang 9
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
”.
Trang 10
Cấu trúc của mô hình xử lý ngoại lệ
}
Trang 114 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 đó
.
Trang 12Chương trình minh họa cách sử dụng các khối
;
}
}
}
Trang 13
+
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
.
Trang 145 Khối “finally
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
Trang 15+
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
Trang 16Minh họa sự hình thành các khối
“try”,”catch” và “finally
”:
try block
catch block finally block
finally block
No Exception Exception occurs
Trang 176
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
Trang 187 Danh sách các ngoại lệ
:
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ệ ArrayIndexOutOfBoundsExeption 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
Trang 19II 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
()
Trang 201 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
Trang 212 Một số phương thức trong lớp File
File(File dirObj, String filename)
Trong đó, directoryPath là tên đường dẫn của tập tin, filename là tên tập
tin, và dirObj 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
Trang 22Một số phương thức quan trọng
:
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 milisec)
Đặt thời gian của tập tin theo milisec, 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 milisec)
Đặ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
Trang 23Ví dụ minh họa một số phương thức của File
;
System.out.println("File Name: "+ f1.getName())
;
System.out.println("Path: "+f1.getPath())
;
System.out.println("Abs Path: "+ f1.getAbsolutePath())
;
System.out.println("Parent: "+f1.getParent())
;
System.out.println(f1.exists() ?"exists" : "does not exist")
;
System.out.println(f1.canWrite()? "is writeable":"is not writeable")
;
System.out.println(f1.canRead() ? "is readable":"is not readable")
;
System.out.println("is "+ (f1.isDirectory()?"" : "not"+"a directory"))
;
System.out.println(f1.isFile()?"is normal file":"might be a named pipe")
;
System.out.println(f1.isAbsolute()?"is absolute":"is not absolute")
;
System.out.println("File last modified: "+f1.lastModified())
;
System.out.println("File size: "+ f1.length()+"Bytes")
;
Trang 243 Thư mụ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
Trang 25
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
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)
Trang 26+
Hàm accept() trả về true cho các tập tin trong
thư mục directory và có mặt trong danh sách (các tập tin tương xứng với filename)
+
Lớp OnlyExt thể hiện FilenameFilter Nó sẽ dùng
sửa đổi chương trình trước để giới hạn các tập tin
trả về bởi list() với những tập tin có cùng phần tên
mở rộng
Trang 27
5 listFile
:
+
Java cung cấp một dạng biến thể của list() là listFiles() rất hữu ích
Các dạng của listFiles() trình bày sau đây
.
File[] listFiles
()
File[] listFiles(FilenameFilter FFObj)
File[] listFiles(FileFilter FObj)
Các phương thức trên trả về mảng các đối tượng File thay thế vì mảng
chuỗi tên tập tin Hàm đầu tiên trả về tất cả các tập tin và hàm thứ hai
trả về những file thỏa mãn FilenameFilter xác định Chỉ khác là trả về các đối tượn File Hai hàm đầu tiên làm việc tương tự như các dạng
Trang 28III Lớp interface Serializable
:
+
Để ghi được đối tượng vào file ta cần lớp ObjectOutputStream và đọc đối tượng đó là ObjectInputStream Muốn đọc và ghi được đối tượng thì ta
cần cài đặt (implement ) interface Serializable cho nó
nó là ta đã có thể sử dụng lớp ObjectOutputStream ()
Trang 29+
Khi đối tượng được đc ghi vào luông thì methods
writeOject() sẽ tự động lưu các thông tin của đối tượng
đó Và ta có thể đọc lại đối tượng đó bằng methods
readObject
()
+
Để viết một object ra file thì object đó cần implemnts
inteface Serializable Vì lúc này khi viết object ra file nó giúp chuyển cấu trúc phức của object thành cấu trúc
tuần tự đơn giản hơn trước khi ghi ra file Serialize
-nhận một tham chiếu System.Object và một tham chiếu
System.IO.Stream làm đối số, tuần tự hóa Object và
ghi nó vào Stream
.
Trang 30TÀI LIỆU THAM KHẢO
1
Bài giảng Lập trình Java (Ngô Công Thắng –
Khoa CNTT – Trường ĐH Nông Nghiệp Hà Nội)
2
Một số nguồn tài liệu trên các địa
Lập trình Java căn bản (Nguyễn Tấn Thành)
4 Lập trình hướng đối tượng trong java (Hoàng
Trọng Thế)