Xử lý ngoại lệ - ThS Nguyễn Hà Giang
lượt xem 6
download
Tình huống Những lỗi phát sinh khi rutime có thể làm hư hại chương trình Có thể không phải lỗi lập trình VD: một số tình huống viết dữ liệu vào file Đĩa bị đầy Lỗi phần cứng File bị thay đổi thành chỉ đọc Không thể truy cập, truy vấn CSDL
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Xử lý ngoại lệ - ThS Nguyễn Hà Giang
- Xử lý ngoại lệ HD: ThS Nguyễn Hà Giang Khoa CNTT - Hutech
- Nội dung Tình huống phát sinh ngoại lệ u Cách xử lý ngoại lệ làm việc trong C# u Câu lệnh try-catch-finally u
- Tình huống Những lỗi phát sinh khi rutime có thể u làm hư hại chương trình Có thể không phải lỗi lập trình u VD: một số tình huống viết dữ liệu vào u file Đĩa bị đầy v Lỗi phần cứng v File bị thay đổi thành chỉ đọc v Không thể truy cập, truy vấn CSDL v … v
- Cách xử lý trước đây GET A FILENAME OPEN THE FILE IF THERE IS NO ERROR OPENING THE FILE READ SOME DATA IF THERE IS NO ERROR READING THE DATA PROCESS THE DATA WRITE THE DATA IF THERE IS NO ERROR WRITING THE DATA CLOSE THE FILE IF THERE IS NO ERROR CLOSING FILE RETURN Hầu hết các bước có khả năng thất bại u Khó xác định chính xác lỗi từ những thông u tin trả về của hàm thư viện Đoạn code phải thực hiện rồi mới biết lỗi! u
- Cách xử lý Exception TRY TO DO THESE THINGS: GET A FILENAME OPEN THE FILE READ SOME DATA PROCESS THE DATA WRITE THE DATA CLOSE THE FILE RETURN IF ERROR OPENING THE FILE THEN ... IF ERROR READING THE DATA THEN ... IF ERROR WRITING THE DATA THEN ... IF ERROR CLOSING THE FILE THEN ... Đoạn code xử lý ngắn gọn, dễ đọc u Logic chương trình hợp lý hơn, những đoạn nghi u ngờ có lỗi nằm trong vùng Try Cho phép xử lý tình huống lỗi rõ ràng và đơn giản! u
- Các đối tượng Exception Trong C#, khi runtime error xuất hiện u CLR sẽ xác định lỗi và phát sinh ta đối v tượng Exception Đối tượng Exception này được ném trở lại v stack chờ cho một phương thức bắt lỗi đó. Nếu Exception này không được chương v trình “catch” thì CRL sẽ in ra thông điệp lỗi
- Mô hình gọi – xử lý Exception CLR Runtime Method Calls Travel The Main( ) Down method Exceptions First Method Passed Up Exception Thrown Here
- Sử dụng try-catch Dùng try-catch để xử lý ngoại lệ u Đặt code có khả năng dẫn đến ngoại lệ v vào khối “try” Cung cấp các khối “catch” theo sau “try” v Có thể cung cấp tất cả catch cho các lỗi v nếu muốn xử lý, bằng cách sử dụng các lớp exception thích hợp Nếu không cung cấp “catch” cho một v ngoại lệ, thì exception này được lan truyền lên trên.
- Cú pháp try-catch Code có khả năng dẫn đến lỗi try { Tham số exception RiskyBussiness(); được catch } catch (SomeException e ) Đoạn xử lý với tình { huống có lỗi // Handle code }
- Khối try Bao gồm các phần u Từ khóa try v Theo sau khối “{…}” v Khối “{…}” bắt buộc phải có, khác với v “{…}” trong if hay for Bên trong khối try u Đặt bất cứ câu lệnh nào có khả năng phát v sinh ra ngoại lệ
- Khối catch Đặt một hay nhiều ngay sau khối try u Không có lệnh nào chen giữa hai khối v catch của một khối try Cú pháp khối catch như sau u catch (Exception-class [var1]) { // xử lý ngoại lệ 1 } catch (Exception-class [var2]) { // xử lý ngoại lệ 2 }
- Ví dụ try-catch Chương trình bị terminate Chương trình kết thúc bình thường
- Sử dụng Finally Khi một exception được ném ra u Luồng thực thi sẽ nhảy vào khối catch xử lý nó. v Một số đoạn code giải phóng tài nguyên có thể bị v bỏ qua Open File // ngoại lệ được phát sinh Read Data // đoạn code này bị bỏ qua, dù file chưa đóng Close File Khối try-catch có phần option là finally v Luôn luôn được gọi v Sử dụng để dọn dẹp các tài nguyên đang nắm v giữ
- VD có try-catch-finally Luôn thực thi dù có hay không có ngoại lệ!
- Lệnh throw Cho phép ném ra một ngoại lệ u Cú pháp: throw exception-object v Phát sinh ra ngoại lệ
- Lớp Exception Có 2 loại ngoại lệ u Ngoại lệ phát sinh bởi chương trình v Ngoại lệ được tạo bởi CLR v Lớp System.Exception là lớp cơ sở cho u tất cả lớp trong C# 2 lớp kế thừa từ lớp này: u ApplicationException: thường làm lớp cơ v bản cho lớp ngoại lệ phát sinh từ ứng dụng SystemException: do CLR phát sinh v
- Lớp Exception (2) Một số lớp Exception thường dùng System.OutOfMemoryException v System.NullReferenceException v Syste.InvalidCastException v Syste.ArrayTypeMismatchException v System.IndexOutOfRangeException v System.ArithmeticException v System.DevideByZeroException v System.OverFlowException v
- Tự tạo lớp exception
- VD truy xuất file
- Tóm tắt Exception làm cho chương trình chặt u chẽ hơn. Tránh terminate chương trình đột ngột vì những lỗi runtime Tập các lớp Exception đa dạng, bao u hàm các vấn đề phát sinh lúc runtime Lớp Exception là lớp cơ sở cho các lớp u xử lý ngoại lệ trong .NET Dễ dàng định nghĩa lớp ngoại lệ, và u phát sinh ngoại lệ trong chương trình
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Chương 7: XỬ LÝ NGOẠI LỆ (Exception Handling)
15 p | 176 | 30
-
XỬ LÝ NGOẠI LỆ phần 1
11 p | 112 | 29
-
XỬ LÝ NGOẠI LỆ phần 2
12 p | 125 | 21
-
CoreJava - Phần 7 - Xử lý ngoại lệ
0 p | 124 | 17
-
Bài giảng Lập trình cho khoa học dữ liệu - Bài 5: Xử lý dữ liệu trong Python
19 p | 50 | 15
-
Bài giảng Ngôn ngữ lập trình Java: Xử lý ngoại lệ (Exception) - TS. Nguyễn Thị Hiền
33 p | 60 | 10
-
Bài giảng Lập trình hướng đối tượng - Chương 6: Xử lý ngoại lệ
39 p | 157 | 8
-
Bài giảng Kỹ thuật lập trình Java - Chương 4.2: Ngoại lệ
29 p | 77 | 7
-
Bài thực hành Lập trình Java 2 - Bài thực hành 2: Xử lý ngoại lệ trong Java
3 p | 104 | 6
-
Bài giảng Lập trình Java: Chương 5 - Xử lý ngoại lệ
16 p | 76 | 6
-
Bài giảng Lập trình hướng đối tượng - Bài 10: Ngoại lệ
62 p | 52 | 5
-
Bài giảng Lập trình Java 2 - Bài 2: Xử lý ngoại lệ
30 p | 31 | 5
-
Bài giảng Nhập môn java - Chương 7: Xử lý ngoại lệ (Exception)
35 p | 59 | 4
-
Bài giảng Lập trình hướng đối tượng - Bài 8: Ngoại lệ và xử lý ngoại lệ
0 p | 82 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 10 - Ngoại lệ và xử lý ngoại lệ
62 p | 34 | 4
-
Bài giảng Lập trình Java cơ bản: Bài 6 - Xử lý ngoại lệ
34 p | 52 | 3
-
Bài giảng Xử lý ngoại lệ
33 p | 61 | 3
-
Bài giảng Bài 7: Quản lí ngoại lệ
14 p | 41 | 2
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