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

Lập trình Java căn bản - Quản lý lỗi và gom rác

Chia sẻ: Nguyễn Doãn Mạnh Đoàn | Ngày: | Loại File: PDF | Số trang:14

64
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Mục tiêu bài giảng: định nghĩa được exception là gì, phân loại được các exception. Sử dụng được các cú pháp exception, biết cách tự quản lý exception.

Chủ đề:
Lưu

Nội dung Text: Lập trình Java căn bản - Quản lý lỗi và gom rác

  1. M c tiêu • Đ nh nghĩa ñư c exception là gì. • Phân lo i ñư c các exception Chương 4 • S d ng ñư c cú pháp Qu n lý l i và gom rác try..catch..finally • Bi t cách t qu n lý exception • Gi i thích ñư c cơ ch gom rác c a Java 1 2 1
  2. N i dung 4.1- Ôn t p • L p là mô hình bi u di n cho 1 t p các ñ i 4.1- Ôn t p. tư ng có c u trúc gi ng nhau. 4.2- Exception là gì? • interface là 1 tên g i cho m t t p các KHAI 4.3- C u trúc qu n lý l i c a Java BÁO d li u h ng và hành vi hình thành nên 4.4- Mô hình try catch finally m t mô hình x lý, các hành vi chưa ñư c 4.5- S d ng throws hi n th c c n hi n th c các l p. 4.6- T ñ nh nghĩa exceptions • L p tr u tư ng là l p khai báo v i t khóa abstrat và có ít nh t 1 hành vi abstract 4.7- Cơ ch gom rác • Hành vi abstract là hành vi ch m i ñư c khai 4.8- Tóm t t-tr c nghi m-bài t p báo mà chưa hi n th c. 3 4 2
  3. 4.2- Exception là gì? Ôn t p • Java là ngôn ng m nh, có nghĩa là t i thi u hóa ñư c l i và khi có l i thì chúng có th ñư c • L p abstract và interface khác nhau qu n lý. ch : 1 l p ch có th th a k t 1 l p • L i có 2 lo i: L i lúc biên d ch (compile-time error-l i cú pháp), l i lúc th c thi (run-time khác nhưng l i có th là 1 hi n th c c a error- gi i thu t sai, không d ñoán ñư c tình nhi u interface. hu ng). • Gói là 1 khai báo cho 1 t p các l p, các • Exception= runtime-error interface và các gói c p th p hơn. • Thí d : th c hi n phép chia mà m u s là 0 • Khi 1 exception x y ra, chương trình k t thúc • Gói là 1 thư m c có tên trùng v i tên gói. ñ t ng t và ñi u khi n ñư c tr l i cho OS C n ph i qu n lý ñư c các tình hu ng này. 5 6 3
  4. 4.3- C u trúc các class qu n lý l i c a Java C u trúc các class qu n lý l i c a Java(tt) Tham kh o JavaHelp • Exception: l p n n c a phân c p exception. Object • RuntimeException: L p n n c a nhi u l p trong Throwable java.lang.exceptions. • ArithmaticException: Qu n lý l i tóan h c như chia cho Error Exception 0. AWTError • IllegalArgumentException : L i sai ñ i s . SQLException RuntimeException • ArrayIndexOutOfBoundsException: L i sai ch s c a ThreadDead ClassNotFoundException m ng … … • NullPointerException: L i ñã truy xu t 1 ñ i tư ng chưa ArithmaticException kh i t o NullPointerException • SecurityException : L i không ñư c quy n truy c p. Khi 1 error/exception x y ra, ta NumberFormatException • ClassNotFoundException: L i không th n p 1 l p vì nói r ng nó b “thrown” (throw) không có l p này … 7 8 4
  5. C u trúc các class qu n lý l i c a Java(tt) 4.4- Mô hình try catch finally • NumberFormatException: L i chuy n String ->float. • Có th th th c thi 1 tác v (try), n u xu t 1 • AWTException: L i Abstract Windowing Toolkit l i thì b y l i (catch) ñ x lý tình hu ng l i • ArithmaticException: Qu n lý l i tóan h c như chia và cu i cùng th c thi ti p (finally). cho 0. • Cú pháp • IOException : L p n n c a IO exception. ( Không có các c p {} L i: ‘{‘ expected ) • FileNotFoundException: L i không có file ñã ñ c t try block • EOFException: L i c truy xu t d li u mà file ñã h t no try {….} e? • IllegalAccessException : L i truy xu t ñ n 1class b c m. catch (Exception e) { …} catch block • NoSuchMethodException: L i không có method ñã finally { …} ñ ct … finally block • InterruptedException: lu ng b ng t 9 10 5
  6. Mô hình try catch finally(tt) import java.io.*; // ArrayCatch.java class ArrayCatch import java.io.*; // TryCatchDemo.java { static String S; class TryCatchDemo static void Out() { System.out.println(S);} { static double Divide ( double a, double b) { return a/b;} public static void main(String args[]) public static void main(String args[]) { try { Out(); } { try { System.out.println(Divide(5,0));} catch (NullPointerException e) catch( Exception e) { System.out.println("Exception occured:");} { System.out.println("System exception:"+ e.toString());} finally { int a[]= { 1,2,3,4,5}; finally try { System.out.println(a[7]);} { System.out.println("I tried to divide 5 by 0");} catch(ArrayIndexOutOfBoundsException e2) System.out.println("End!"); Infinity { System.err.println("Out of bounds");} } I tried to divide 5 by 0 } } null } End! } Out of bounds 11 12 6
  7. 4.5- S d ng throw • Tóan t throw cho phép ch th 1 exception ñã S d ng throw/throws ... x y ra. K t q a là 1 ñ i tư ng c a 1 l p d n xu t c a l p Throwable. • Cú pháp sinh 1 Exception trong hàm • Tình hu ng: method X() g i method Y(), Y() ReturnType Method (…) throws ExceptionClass th c thi gây ra 1 exception mà không ñư c qu n { if (…) throw new ExceptionClass(“Message”); lý, exception này lan v cho phương th c g i là else { …… } X() . N u trong X() cũng không qu n lý l i } L i truy n v cho nơi ñã g i X() • Cách gi i quy t: a) Trong Y() có qu n lý l i; b) Trong X() có có c u trúc try…catch ñ qu n lý l i. 13 14 7
  8. Thí d v lan truy n exception Cách s a 1- Try catch b y l i trong main(…) import java.io.*; // ArrayCatch.java import java.io.*; // ArrayCatch.java Illegal index Kích thư c c a m ng: 5 class ArrayCatch class ArrayCatch Press any key… { int a[]= { 1,2,3,4,5}; int n=5; Ch s itruy xu lên7 l truy n t: { int a[]= { 1,2,3,4,5}; int n=5; public static void main(String args[]) public static void main(String args[]) B yl i { ArrayCatch Obj= new ArrayCatch(); Obj.OutElement(7); } { ArrayCatch Obj= new ArrayCatch(); void OutElement(int i) { System.out.println (a[i]); } try { Obj.OutElement(7);} } catch (ArrayIndexOutOfBoundsException e) Exception in thread "main" { System.out.println("Illegal index");} java.lang.ArrayIndexOutOfBoundsException } at ArrayCatch.OutElement(ArrayCatch.java:10) void OutElement(int i) { System.out.println (a[i]); } at ArrayCatch.main(ArrayCatch.java:7) } 15 16 8
  9. Cách s a 2- Try catch b y l i trong OutElement(…) Try catch b y l i trong OutElement(…) - tt import java.io.*; // ArrayCatch.java class ArrayCatch Khai báo có b yl i K t q a: { int a[]= { 1,2,3,4,5}; int n=5; public static void main(String args[]) Exception in thread "main" { ArrayCatch Obj= new ArrayCatch();Obj.OutElement(7);} java.lang.ArrayIndexOutOfBoundsException: void OutElement(int i) throws Index is out of array ArrayIndexOutOfBoundsException at ArrayCatch.OutElement(ArrayCatch.java:9) { if (i=n) throw new at ArrayCatch.main(ArrayCatch.java:6) Phát sinh 1 ñ i ArrayIndexOutOfBoundsException tư ng Exception ("\nIndex is out of array"); trong phân c p else System.out.println (a[i]); } N i dung thông báo l i t ch n } thay cho thông báo h th ng 17 18 9
  10. 4.6- T ñ nh nghĩa exceptions 4.7- Cơ ch gom rác • User-defined Exception: T o ra 1 l p con c a các l p Error • Là cơ ch t ñ ng c a Java ñ h y b các ñ i ho c Exception tư ng không còn dùng n a. import java.io.*; // ArrayCatch.java • Hi n th c b ng heap ñ ng (xem l i chương 1). class MyException extends ArrayIndexOutOfBoundsException • Dù có th công g i trình gom rác b ng { MyException() { super("\nIndex is out of array");}} System.gc() cũng không b o ñ m vi c gom rác class ArrayCatch ñư c th c thi ngay l p t c. { int a[]= { 1,2,3,4,5}; int n=5; • Có th th công t t trình gom rác b ng ch th public static void main(String args[]) { ArrayCatch Obj= newArrayCatch();Obj.OutElement(7);} java –noasyncgc File.class void OutElement(int i) throws MyException nhưng có th ph i tr giá là thi u b nh do s ñ i { if (i=n) throw new MyException(); tư ng sinh ra trong chương trình khó tiên li u else System.out.println (a[i]); Hi u su t chương trình kém. } } 19 20 10
  11. Cơ ch gom rác- finalize() method Thí d : • Java cung c p phương th c finalize() h at Object a= new Object(); Object b=a; a=null; ñ ng như 1 Destructor c a C++ ñ h y các a, b là các references c a 1 ñ i t ơng. quá trình trư c khi qúa trình tr ñi u khi n a=null, nghĩ r ng ñ i tư ng không còn dùng v cho h ñi u hành. n a Sai vì b v n tham kh o ñ n nó • Chú ý: Ch có ñ i tư ng m i b gom rác ch Object c= new Object(); tham kh o ñ n ñ i tư ng không b gom. c=null ; // ñ i tư ng này bây gi là rác • Cú pháp: Object d= new Object(); protected void finalize() throws Throwable d=new Object(); T i lúc này, ñ i tư ng v a t o tr ơc ñó là rác 21 22 11
  12. Thí d : Trong chương trình trên L p RunTime mô t h th ng lúc th c thi Dùng hành vi static getRunTime ñ kh i t o 1 ñ i tư ng RunTime M t s methods c a l p Runtime 23 24 12
  13. 4.8- Tóm t t-tr c nghi m-bài t p Methodes c a l p RunTime 1. Có hai l ai l i: L i lúc biên d ch và l i khi th c thi. 2. L i biên d ch là l i ……………………… 3. L i lúc th c thi còn g i là ……………….. 4. N u không qu n lý Exception, chương trình s ng t ñ t ng t và ñi u khi n ñư c tr v cho …………………………………….. 5. Hòan tòan có th b y ñư c các …………………………….. 6. Qu n lý exception cho phép x lý l i ñúng lúv (true/false) 7. 5 t khóa ñư c dùng ñ b y l i : ………………………………….. 8. T khóa throws cho phép dùng ñ i v i các exception mà 1 hàm có th x lý (true/false) 9. T khóa throw ch th r ng 1 exception ñã x y ra (true/false) 10. T khóa finally ch th nơi b t ñ u 1 kh i phát bi u không ph thu c vào 1 l i có x y ra hay không (true./false) 11. Ta có th t t o ra 1 Exception class (true/false) 12. System.gc() s yêu c u h th ng ………………………….. 25 26 13
  14. Bài t p 1- Vi t chương trình ch y b ng ñ i s dòng l nh bu c nh p các tham s cho chương trình là các ký s . N u nh p ký t thì báo l i “Không nh p ký t ” Lưu ý: Cú pháp java file.class arg1, arg2, … 2- Vi t chương trình nh p vào 1 m ng s int, nh p 1 v trí i, xu t ph n t th i n u i h p l . Ngư c l i xu t thông báo “Ngòai t m ph sóng”. G i ý: xem l i chương 2 v nh p s int, xem trong chương này v Exception ng v i tình hu ng ngòai t m ph sóng:” này. 27 14
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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