YOMEDIA
ADSENSE
Bài giảng lập trình java - Bài 6
110
lượt xem 32
download
lượt xem 32
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Ngoại lệ là sự kiện xảy ra trong khi thực hiện chương trình va phá vỡ luồng điều khiển của chương trình, khi lỗi xuất hiện , phương thức xuất hiện lỗi tạo đối tượng ngoại lệ chứa thông tin về lỗi và gửi cho hệ thống thực thi. Việc tạo và gửi hệ thống thực thi được gọi là ném.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng lập trình java - Bài 6
- Bài gi ng L P TRÌNH JAVA Lê ðình Thanh B môn M ng và Truy n thông Máy tính Khoa Công ngh Thông tin Trư ng ð i h c Công ngh , ðHQGHN Lê ðình Thanh, Các l p thi t y u trong Java Bài 6 Các l p thi t y u Lê ðình Thanh, Các l p thi t y u trong Java
- N i dung • X lý ngo i l Vào, ra cơ b n • X lý ñ ng th i • Môi trư ng • • Bi u th c chính quy Lê ðình Thanh, Các l p thi t y u trong Java Ngo i l • Ngo i l (exception hay exceptional event) là s ki n x y ra trong khi th c thi chương trình và phá v lu ng ñi u khi n c a chương trình. • Khi l i xu t hi n Phương th c xu t hi n l i t o ñ i tư ng ngo i l (exception • object) ch a thông tin v l i và g i cho h th ng th c thi (runtime system). Vi c t o và g i ñ i tư ng ngo i l cho h th ng th c thi ñư c g i là ném (throw) ngo i l . H th ng th c thi tìm ngư c chu i tri u g i (call stack) • phương th c ñ tìm ra phương th c ch a ño n mã x lý ngo i l (exception handler) ðo n mã x lý ngo i l b t (catch) ngo i l và x lý • Lê ðình Thanh, Các l p thi t y u trong Java
- X lý ngo i l Searching the call stack Call Stack for the exception handler Lê ðình Thanh, Các l p thi t y u trong Java B t và x lý ngo i l try { //mã chương trình x lý nghi p v } catch (ExceptionType1 e) { //mã x lý ngo i l n u ngo i l thu c ki u ExceptionType1 } [catch (ExceptionType2 e) { //mã x lý ngo i l n u ngo i l thu c ki u ExceptionType2 } finally { //mã th c thi b t k ngo i l x y ra hay không }] Lê ðình Thanh, Các l p thi t y u trong Java
- B t và x lý ngo i l Mã ñư c th c thi K t qu in ra màn hình Entering try statement Closing PrintWriter Lê ðình Thanh, Các l p thi t y u trong Java B t và x lý ngo i l Mã ñư c th c thi K t qu in ra màn hình Entering try statement Caught IOException: OutFile.txt PrintWriter not open Lê ðình Thanh, Các l p thi t y u trong Java
- B t và x lý ngo i l Ném FileWriter FileWriter Tìm handler Chuy n PrintWriter PrintWriter ti p Tìm handler Bt writeList writeList main main Call Stack Lê ðình Thanh, Các l p thi t y u trong Java Ném ngo i l M i ngo i l ñ u ph i ñư c phát sinh m t phương th c trư c • khi ñư c chuy n ti p và b t các phương th c tri u g i M t phương th c có th phát sinh ngo i l và phương th c tri u • g i có th b t và x lý • Áp d ng khi vi t gói, ví d gói x lý danh sách. • ð ngư i vi t ng d ng có th x lý theo ý c a h public Object pop() { Object obj; if (size == 0) { throw new EmptyStackException(); } obj = objectAt(size - 1); setObjectAt(size - 1, null); size--; return obj; } Lê ðình Thanh, Các l p thi t y u trong Java
- Chuy n ti p ngo i l M t phương th c có th không b t và x lý ngo i l mà chuy n • ti p cho phương th c ñã tri u g i nó (phương th c li n trư c trong chu i tri u g i) • Áp d ng khi vi t gói, ví d gói x danh sách. • ð ngư i vi t ng d ng có th x lý theo ý c a h public void writeList() throws IOException, ArrayIndexOutOfBoundsException { PrintWriter out = new PrintWriter(new FileWriter("OutFile.txt")); for (int i = 0; i < SIZE; i++) { out.println("Value at: " + i + " = " + vector.elementAt(i)); } out.close(); } Lê ðình Thanh, Các l p thi t y u trong Java Các l p ném ñư c Các l p Error ñ nh nghĩa các s c nghiêm tr ng, thu c • JVM. Các ng d ng thư ng không ném và b t Error Các l p Exception ñ nh nghĩa các ngo i l khi vi t gói • Lê ðình Thanh, Các l p thi t y u trong Java
- ð nh nghĩa l p ngo i l ð nh nghĩa l p ngo i l ng v i các ngo i l phát sinh • trong l p ñư c ñ nh nghĩa • K th a t l p Exception Ví d , l p LinkedList v i các phương th c objectAt(int n) — L y ñ i tư ng v trí th n – Ném ngo i l InvalidIndexException n u n < 0 ho c n >= size. firstObject() — L y ñ i tư ng ñ u tiên – Ném ngo i l EmptyListException khi danh sách r ng. indexOf(Object o) — Tìm ñ i tư ng – Ném ngo i l ObjectNotFoundException n u không tìm th y. Lê ðình Thanh, Các l p thi t y u trong Java L i ích c a s d ng ngo i l • Tách mã x lý l i v i các mã x lý nghi p v Chuy n ti p l i lên các phương th c trên • • Phân nhóm các l i Lê ðình Thanh, Các l p thi t y u trong Java
- Vào/ra cơ b n • Các dòng vào/ra (I/O Streams) • Vào/ra v i t p (File I/O) Lê ðình Thanh, Các l p thi t y u trong Java Các dòng vào/ra • M t dòng vào/ra (I/O stream) bi u di n m t ngu n vào/ñích ra d li u • Có th bi u di n nhi u ngu n/ñích khác nhau: b ñ m, t p, thi t b , chương trình khác. • H tr nhi u ki u d li u khác nhau: byte, d li u nguyên th y, ñ i tư ng • Phương th c cơ b n: read()/write(data) Lê ðình Thanh, Các l p thi t y u trong Java
- Byte streams • Bi u di n dòng d li u g m các bytes liên ti p Dòng vào: XXXInputStream, phương th c ñ c byte read() • Dòng ra: XXXOutputStream, phương th c ghi write(byte) • FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream("xanadu.txt"); out = new FileOutputStream("outagain.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } Lê ðình Thanh, Các l p thi t y u trong Java Character Streams • Bi u di n dòng các ký t liên ti p T ñ ng chuy n ñ i các mã thành Unicode • Dòng vào: XXXInputReader, phương th c ñ c int read() • Dòng ra: XXXOutputWriter, phương th c ghi write(int) • • Mã ký t ñư c lưu 16 bit th p c a int FileReader in = null; FileWriter out = null; try { in = new FileReader("xanadu.txt"); out = new FileWriter("outagain.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } Lê ðình Thanh, Các l p thi t y u trong Java
- ð c/ghi theo dòng Character stream thư ng ch a n i dung c a c văn b n: g m • nhi u dòng (lines) văn b n • M t line là m t chu i ký t k t thúc b ng ký t xu ng dòng: ‘\r\n’, ‘\n’ ho c ‘\r’. ð c/ghi c dòng văn b n là phương pháp hi u qu hơn ñ c • t ng ký t BufferedReader in = null; PrintWriter out = null; try { in = new BufferedReader(new FileReader("xanadu.txt")); out = new PrintWriter(new FileWriter("outagain.txt")); String l; while ((l = in.readLine()) != -1) { out.println(l); } } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } Lê ðình Thanh, Các l p thi t y u trong Java } Buffered Streams Các dòng không ñ m (unbuffered) như FileInputStream, • FileReader, … làm vi c tr c ti p v i HðH, các thao tác ñ c ghi ñư c qu n lý tr c ti p b i HðH Thao tác ñ c: ñ c t thi t b • • Thao tác ghi: ghi ngay ra thi t b Không hi u qu vì nhi u l n ph i truy c p ñĩa, m ng, … • Gi i pháp: S d ng dòng ñ m (buffered) ñ ñ c/ghi c kh i • => ít l n truy c p ph n c ng ð c: Khi vùng ñ m r ng, ñ c t ngu n vào ñ y ñ m • Ghi: Khi vùng ñ m ñ y, ghi t t c vào ñích • N u c n ch ñ ng ghi ra ñích khi chưa ñ y ñ m: G i flush() • Các l p: BufferedInputStream, BufferedOutputStream, • BufferedReader, BufferedWriter Lê ðình Thanh, Các l p thi t y u trong Java
- Scanner Cung c p các phương th c ñ ñ c t ng t t (token) trong • character stream, phân lo i t t (s nguyên, s th p phân, …) T t ñơn thu n là xâu ký t . Character stream là dãy liên • ti p các t t và các t phân cách (separator/delimiter). Gi a hai t phân cách liên ti p là m t t t . Gi a hai t t có th có nhi u t phân cách. M c ñ nh, d u tr ng (blank, tab, d u câu, …) ñư c dùng làm • t phân cách. ð ki m tra m t ký t có ph i là d u tr ng hay không • Character.isWhitespace. Mu n s d ng t phân cách khác, s d ng phương th c • useDelimiter(",\\s*") Lê ðình Thanh, Các l p thi t y u trong Java Scanner ð c các t t • import java.io.*; import java.util.Scanner; Scanner s = null; try { s = new Scanner(new BufferedReader(new FileReader("xanadu.txt"))); while (s.hasNext()) { System.out.println(s.next()); } } finally { if (s != null) { s.close(); } } Lê ðình Thanh, Các l p thi t y u trong Java
- Scanner ð c t t ñư c phân lo i • s.useLocale(Locale.US); while (s.hasNext()) { if (s.hasNextDouble()) { sum += s.nextDouble(); } else { s.next(); } } Lê ðình Thanh, Các l p thi t y u trong Java Printing and Formatting Hai l p cơ s th c cung c p phương th c print, println và • format là • PrintWriter: m t chacracter stream • PrintSteam: m t byte stream • print và println • Có m t tham s có ki u nguyên th y Bi n ñ i m t giá tr thành xâu và in xâu • int i = 2; double r = Math.sqrt(i); System.out.print("The square root of "); System.out.print(i); System.out.print(" is "); System.out.print(r); System.out.println("The square root of " + i + " is " + r + "."); Lê ðình Thanh, Các l p thi t y u trong Java
- Printing and Formatting • format Có m t ho c nhi u tham s b t kỳ • Tham s ñ u tiên là xâu ký t có th ch a ký t ñ nh d ng • (%d, %f, %s, …) • Các tham s ti p theo có ki u nguyên th y Thay ký t ñ nh d ng th i trong xâu tham s th nh t b ng • bi u di n giá tr tham s th i+1 theo ñ nh d ng ñư c xác ñ nh b i ký t ñ nh d ng th i. Tr v xâu tham s th nh t ñã ñư c thay các ký t ñ nh d ng b ng giá tr tham s phía sau. int i = 2; double r = Math.sqrt(i); System.out.format("The square root of %d is %f.%n", i, r); Lê ðình Thanh, Các l p thi t y u trong Java Vào/ra v i dòng l nh • Dòng vào chu n • System.in – là m t byte stream. ð dùng như m t character stream, s d ng l p bao InputStreamReader InputStreamReader cin = new InputStreamReader(System.in); • Dòng ra chu n • System.out và System.err – là các byte streams nhưng có th mô ph ng character stream • Bàn giao ti p • Console - s d ng thay th cho các dòng vào/ra chu n v i các phương th c thu n ti n hơn: readLine, readPassword, format, … Lê ðình Thanh, Các l p thi t y u trong Java
- Data Stream • Các dòng vào/ra cho các ki u d li u nguyên th y Hai l p hay dùng là DataInputStream v i các phương th c • readTTT, và DataOutputStream v i các phương th c writeTTT, trong ñó TTT là tên ki u d li u nguyên th y out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(dataFile))); out.writeDouble(price); out.writeInt(unit); out.writeUTF(desc); in = new DataInputStream(new BufferedInputStream(new FileInputStream(dataFile))); price = in.readDouble(); unit = in.readInt(); desc = in.readUTF(); Lê ðình Thanh, Các l p thi t y u trong Java Object Stream Dòng vào/ra cho ñ i tư ng • Các ñ i tư ng có th ghi vào/ñ c t dòng ph i thu c l p cài • ñ t giao di n Serializable. Hai l p hay dùng là ObjectInputStream v i phương th c • readObject() và ObjectOutputStream v i phương th c writeObject(obj) Khi ghi vào/ñ c ra m t ñ i tư ng, các ñ i tư ng ñư c tham • chi u cũng ñư c ghi/ñ c theo Lê ðình Thanh, Các l p thi t y u trong Java
- Object Stream M t dòng ch lưu ñ i tư ng duy nh t m t l n, n u ghi nhi u • l n thì nhi u tham chi u ñư c ghi N u ghi m t ñ i tư ng vào hai dòng khác nhau thì khi ñ c ra • ñư c 2 ñ i tư ng khác nhau Lê ðình Thanh, Các l p thi t y u trong Java Môi trư ng n n Môi trư ng n n (platform environment) = h ñi u hành, máy • o Java, thư vi n các l p, d li u c u hình. CácAPI ñ c u hình môi trư ng n n: • • Các ti n ích c u hình • Thông s c u hình • Tham s dòng l nh • Bi n môi trư ng • Các ti n ích h th ng • Thông s h th ng • Qu n lý an ninh (t ñ c) • M t s phương th c h th ng (t ñ c) • CLASS và CLASSPATH (t ñ c) Lê ðình Thanh, Các l p thi t y u trong Java
- Thông s c u hình • M t thông s c u hình là m t c p xâu ký t khóa/giá tr , ví d LastBrowsedTabs=“http://dantri.com.vn;http://uet.vnu.edu.vn” Các thông s c u hình ñư c lưu m t t p c u hình (thư ng d ng văn • b n), ñư c chương trình ñ c vào khi kh i ñ ng và lưu l i trư c khi k t thúc Trong th i gian th c thi, chương trình s d ng ñ i tư ng Properties ñ • thao tác v i các thông s c u hình Properties ---------------------------------- k1 v1 T p c u hình k2 v2 --------------------- … k1 v1 ---------------------------------- k2 v2 load(is) FileInputStream …. store(os) FileOutputStream Lê ðình Thanh, Các l p thi t y u trong Java Thông s c u hình ð c c u hình t t p • Properties applicationProps = new Properties(); FileInputStream in = new FileInputStream("appProperties.config"); applicationProps.load(in); in.close(); • Ghi c u hình ra t p FileOutputStream out = new FileOutputStream(" appProperties.config "); applicationProps.store(out, "---Comments---"); out.close(); Lê ðình Thanh, Các l p thi t y u trong Java
- Thông s c u hình Properties cung c p hàng lo t các phương th c ñ ñ c và • c p nh t thông s getProperty(String key) getProperty(String key, String default) setProperty(String key, String value) contains(Object value) containsKey(Object key) list(PrintStream s) Properties k th a list(PrintWriter w) Hashtable cài ñ t elements() m t b ng băm nên keys() các thao tác tìm theo propertyNames() khóa r t hi u qu stringPropertyNames() size() remove(Object key) Lê ðình Thanh, Các l p thi t y u trong Java Tham s dòng l nh Khi g i m t chương trình b ng l nh java TenCT, chúng ta • có th cung c p các tham s cho chương trình Các tham s này ñư c truy n cho agrs c a hàm main • public class SomeClass { public static void main (String[] args) { for (String s: args) { System.out.println(s); } } } java SomeClass “A sunny day” “We go out” A sunny day We go out Lê ðình Thanh, Các l p thi t y u trong Java
- Bi n môi trư ng Java cung c p phương th c ddocj các biên môi trư ng • import java.util.Map; public class EnvMap { public static void main (String[] args) { Map env = System.getenv(); for (String envName : env.keySet()) { System.out.format("%s=%s%n", envName, env.get(envName)); } } } //String value = System.getenv(env); Lê ðình Thanh, Các l p thi t y u trong Java Thông s h th ng L p System ch a m t ñ i tư ng Properties ñ qu n lý các • thông s h th ng như tên h ñi u hành, thư m c cài ñ t JRE, … ð c thông s h th ng • Properties System.getProperties() String System.getProperty(tenTS); Thay ñ i thông s h th ng • System.setProperties(Properties p); H i: Làm như th nào ñ thay ñ i m t thông s h th ng? • Lê ðình Thanh, Các l p thi t y u trong Java
- Thông s h th ng L p System ch a m t ñ i tư ng Properties ñ qu n lý các • thông s h th ng như tên h ñi u hành, thư m c cài ñ t JRE, … ð c thông s h th ng • Properties System.getProperties() String System.getProperty(tenTS); Thay ñ i thông s h th ng • System.setProperties(Properties p); H i: Làm như th nào ñ thay ñ i m t thông s h th ng? • Lê ðình Thanh, Các l p thi t y u trong Java Ti p theo ng d ng CSDL Lê ðình Thanh, Các l p thi t y u trong Java
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn