1. Trang chủ
  2. » Công Nghệ Thông Tin

Exception trong lập trình nâng cao

4 312 1
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Exception trong lập trình nâng cao
Tác giả Th.S Nguyễn Văn Lành
Chuyên ngành Lập trình Java
Thể loại Bài giảng
Định dạng
Số trang 4
Dung lượng 433,76 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chuyên đề Lập trình Java Chương 5 Biên soạn: Th.S Nguyễn văn Lành Introduction to Java 2/ Session / 1 of 16 Khai niém Error - Exception > Phan loai Y Error : các lỗi không bì

Trang 1

Chuyên đề Lập trình Java

Chương 5

Biên soạn: Th.S Nguyễn văn Lành

Introduction to Java 2/ Session / 1 of 16

Khai niém Error - Exception

> Phan loai

Y Error : các lỗi không bình thường, khó dự đoán, không

có khả năng phục hôi:

* hét bộ nhớ, lỗi hệ thống, môi trường

Exception: các tình huống có thẻ xảy ra làm ảnh

hưởng đên logic bình thường của chương trình

© [di logic, lỗi lập trình

> Các loại lỗi & ngoại lệ đều được biêu diễn bởi các lớp Error

& Exception ké thừa từ lớp java.lang Throwable

> Exception chia théng tin vẻ tỉnh huống lỗi, bao gồm kiều

lỗi, trạng thái của CT khi lỗi xảy ra

> Hệ thông JVM chịu trách nhiệm tìm kiếm mã chương

trình dành cho việc xử lý ngoại lệ

3 of 16

3:00 PM

Nội dung

> Khai niém Error & Exception

> Cau tric try — catch — finally

> Ménh dé throw & throws

> Dinh nghia lop Exception

> Exception va overriding

2 of 16 3:00 PM

Khai niém Error - Exception

> Cầu trúc phân cấp các lớp lỗi-ngoại lệ trong Java

Y Throwable: quang di duoc

4 of 16 3:00 PM

Trang 2

Exception

>» Phan loai Exception

¥ Runtime exceptions:

* 16i khi chạy CT, thường do viết mã chưa chuân

truy xuât vượt phạm vi mảng

« Có thể dự đoán tránh được khi viết mã nguồn

s RuntimException & các lớp con của nó

se không cần xử lý

vChecked exceptions

+ lỗi đã được kiểm tra dự báo

lôi nhập liệu, vào ra

¢ Exception va cac lớp con - ngoại trừ RuntimeException

s phải có mã xử lý: Sorte

tu khoa throw va throws

> các Exception được thực sự ném ra từ các hàm khi cần

thông báo cho đối tượng gọi hàm tình trạng lỗi

> dùng mệnh đẻ throw đề thực hiện ném ra Exception

if (balance<amount) throw new BankingException(“Out of money”);

> Phương thức chứa câu lệnh trên phải khai báo khả năng

lôi băng mệnh dé throws

public double withdraw(double amount) throws BankingException{

if (balance<amount) throw new BankingException(“No money”);

else balance-=amount;

return balance;

}

7 of 16 3:00 PM

Tao ra Exception, nem ngoai lệ

> Trong Java tao ra 1 déi trong Exception khi cé

lỗi và chuyền nó vào môi trường JVM tại thời

điểm chạy CT được gọi là ném ngoại lệ - throwing

an exception

> Dự đoán lỗi có thể xảy ra và chuẩn bị mã xử lý gọi là bắt lay lỗi — catching an exception

> Các lỗi liên quan đến logic của ứng dụng nên

được biêu diễn bằng cách định nghĩa các lớp con

của Exception

Y public class BankingException extends Exception { public BankingException(String msg) {super(msg); }

}

6 of 16

3:00 PM

Xw ly Exception

> Trinh bién dich Java yéu cau tat ca checked Exception phai duoc xtr ly

> Hai la chon xu ly Exception:

* bắt lỗi và xử lý dùng khói try — catch - finally

# tuyên bó ném lỗi dùng khai báo fhirows

> Các lỗi RuntimeException khi thi hành 1 phương thức sẽ kết thúc việc thi hành các lệnh tiếp theo

của phương thức, đồng thời, exception này sẽ được ném về phía đối tượng gọi phương thức

nêu không có mã xử lý sẽ trả về hàm main đề kết thúc

8 of 16

3:00 PM

Trang 3

Sw dung try catch finally

> try{ doSomething; }

catch(Exception e){ doXulyLoi; }

finally { alwayDoThis; }

> khối try:

+ các câu lệnh có khả năng sinh lỗi exception

v sẽ kết thúc thi hành các lệnh còn lại để nhảy sang khói catch khi

có lôi xảy ra

> khéi catch:

+ các câu lệnh xử lý lỗi

+ Thông tin vẻ lỗi lưu trong Exception e

+ nêu có nhiều loại Exception thì có thẻ dùng nhiều khói catch

* Không thê catch néu không có khả năng lỗi trong khói try

> khối finally: (optional)

+ các câu lệnh sẽ được thi hành, bát kẻ có lỗi hay không

3.00 py, loi có thê xảy ra trong khôi finally 9of 16

6 Consider the tollowing class hicrarchy and code tragment:

java lang.Exceptrion java.io D0Excaprion

\ java.io StreeCorruptedexception Jeva.net Bal formedURLExcaption

1 try {

2 /f assume s is previously defined

3 URL u = new URLs);

4 f jin is an ObjectInputStream

5 Object o = in readObject();

6 System.out.printin€’ Success’);

7 3

œ catch (MalformedURLException e) {

9 System.out.printin€’ Bad URL");

10 }

11 catch CStreamCorruptedException e) {

12 System.out.printin€ Bad file contents”);

13 }

14 catch CException e) {

15 System.out.printin€ General exception’);

16 }

17 finally {

18 System.out.printin€’ doing finally part");

Su dung try catch

Example:

int x = (int)(Math.random() * 5);

int y = (int)(Math.random() * 10);

int [] z = new int[5];

try {

System.out.printin(“y/x gives “ + (y/x));

System.out.printin(“y is “+ y + “ z[y] is “ + z[y]);

}

catch (ArithmeticException e) { System.out.printin(“Arithmetic problem “ + e);

}

catch (ArrayIndexOutOfBoundsException e) { System.out.printin(“Subscript problem “ + e);

}

> Try phai di kem voi catch hoac finally 100F 16

Exception va Overriding

> phuong thirc override khéng được phép ném ra

nhiéu checked exceptions hơn phương thức

nguyên thuy ở lớp cơ Sở

Vì lý do đó, một số lớp cơ sở cần phải khai báo ném ra Exception du thực tế không hề có Exception

> phương thức override có thề ném ra các Exception sao cho các exception này là lớp con

của exception đã được ném ra ở phương thức

nguyên thuỷ

12 of 16

3:00 PM

Trang 4

Exception & Overriding

Review question

The method risky() might throw a java.io.|OException,

jJava.lang.RuntimeException, java.net.MalformedURLException

(which is a subclass of java.io.|OException) Which of the following

classes and sets of classes are legal?

A public class SomeClass {

public void aMethod() {

riskyQ;

}

}

B public class SomeClass {

public void aMethod() throws IOException {

riskyQ;

}

13 of 16 3:00 PM

Exception & Overriding

E public class SomeClass {

public void aMethod() throws MalformedURLException {

try {

risky();

}

catch (IOException e) {}

}

public class AnotherClass extends SomeClass {

public void aMethod() throws java.io.IOException {

super.aMethod();

15 of 16

3:00 PM

Exception & Overriding

C public class SomeClass { public void aMethod() throws RuntimeException { risky();

}}

D public class SomeClass { public void aMethod() {

try {

risky();

}

catch (IOException e) { e.printStackTrace();

} }

14 of 16 3:00 PM

Ngày đăng: 19/12/2013, 21:36

TỪ KHÓA LIÊN QUAN