Lập trình Java căn bản - Quản lý lỗi và gom rác
lượt xem 6
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Lập trình Java căn bản - Quản lý lỗi và gom rác
- 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
- 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
- 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.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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Lập trình Java căn bản
193 p | 1459 | 722
-
Thực hành lập trình nhúng căn bản Buổi 3
15 p | 351 | 106
-
Bài giảng Ngôn ngữ lập trình Java căn bản
115 p | 351 | 104
-
Bài giảng Lập trình Java cơ bản
239 p | 230 | 63
-
Bài giảng Lập trình Java căn bản: Chương 2 - ThS. Võ Đức Cẩm Hải
24 p | 19 | 8
-
Bài giảng Lập trình Java căn bản: Chương 6.2 - ThS. Võ Đức Cẩm Hải
30 p | 18 | 8
-
Lập trình Java căn bản - Giới thiệu
11 p | 110 | 8
-
Giáo trình Cơ sở lập trình java căn bản (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ
139 p | 35 | 7
-
Bài giảng Lập trình Java căn bản: Chương 0 - ThS. Võ Đức Cẩm Hải
22 p | 10 | 6
-
Bài giảng Lập trình Java căn bản: Chương 9 - ThS. Võ Đức Cẩm Hải
50 p | 8 | 5
-
Bài giảng Lập trình Java căn bản: Chương 8 - ThS. Võ Đức Cẩm Hải
48 p | 15 | 5
-
Bài giảng Lập trình Java căn bản: Chương 7 - ThS. Võ Đức Cẩm Hải
29 p | 12 | 5
-
Bài giảng Lập trình Java căn bản: Chương 5 - ThS. Võ Đức Cẩm Hải
56 p | 14 | 5
-
Bài giảng Lập trình Java căn bản: Chương 4 - ThS. Võ Đức Cẩm Hải
27 p | 14 | 5
-
Bài giảng Lập trình Java căn bản: Chương 3 - ThS. Võ Đức Cẩm Hải
61 p | 12 | 5
-
Bài giảng Lập trình Java căn bản: Chương 10 - ThS. Võ Đức Cẩm Hải
87 p | 9 | 5
-
Bài giảng Lập trình Java căn bản: Chương 6.1 - ThS. Võ Đức Cẩm Hải
44 p | 8 | 4
-
Bài giảng Lập trình java: Chương 2 - ThS. Hoàng Mạnh Hà
25 p | 93 | 4
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