intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng lập trình java - Bài 6

Chia sẻ: Nguyen Van Nam | Ngày: | Loại File: PDF | Số trang:19

110
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.

Chủ đề:
Lưu

Nội dung Text: Bài giảng lập trình java - Bài 6

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. ð 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
  8. 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
  9. 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
  10. ð 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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

 

Đồng bộ tài khoản
2=>2