Tìm hiểu C# và ứng dụng của C# p 14
Số trang: 7
Loại file: pdf
Dung lượng: 334.88 KB
Lượt xem: 13
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Quản lý lỗiGvhd: Nguyễn Tấn Trần Minh Khang11.2 Đối tượng ExceptionĐối tượng System.Exception cung cấp nhiều phương thức và property hữu ích cho việc bẫy lỗi. Chẳng hạn property Message cung cấp thông tin tại sao nó được ném. Message là thuộc tính chỉ đọc, nó được thiết đặt vào lúc khởi tạo biệt lệ. Property HelpLink cung cấp một kết nối đến tập tin giúp đỡ. Property này có thể đọc và thiết đặt. Property StackTrace chỉ đọc và được thiết lập vào lúc chạy. Trong ví dụ 11-6, property Exception.HelpLink được thiết đặt và nhận về để thông...
Nội dung trích xuất từ tài liệu:
Tìm hiểu C# và ứng dụng của C# p 14Quản lý lỗi Gvhd: Nguyễn Tấn Trần Minh Khang11.2 Đối tượng ExceptionĐối tượng System.Exception cung cấp nhiều phương thức và property hữu íchcho việc bẫy lỗi. Chẳng hạn property Message cung cấp thông tin tại sao nó đượcném. Message là thuộc tính chỉ đọc, nó được thiết đặt vào lúc khởi tạo biệt lệ.Property HelpLink cung cấp một kết nối đến tập tin giúp đỡ. Property này có thểđọc và thiết đặt. Property StackTrace chỉ đọc và được thiết lập vào lúc chạy.Trong ví dụ 11-6, property Exception.HelpLink được thiết đặt và nhận về đểthông tin thêm cho người dùng về biệt lệ DivideByZeroException. PropertyStackTrace được dùng để cung cấp các vết của vùng nhớ stack. Nó hiển thịhàng loạt các phương thức đã gọi dẫn đến phương thức mà biệt lệ được ném ra.Ví dụ 11-6. Làm việc với đối tượng Exception using System; namespace Programming_CSharp { public class Test { public static void Main( ) { Test t = new Test( ); t.TestFunc( ); } public void TestFunc( ) { try { Console.WriteLine(Open file here); double a = 12; double b = 0; Console.WriteLine ({0} / {1} = {2}, a, b, DoDivide(a,b)); Console.WriteLine (This line may or may not print); } catch (System.DivideByZeroException e) { Console.WriteLine( DivideByZeroException! Msg: {0}, e.Message); Console.WriteLine( HelpLink: {0}, e.HelpLink); Console.WriteLine( Heres a stack trace: {0} , e.StackTrace); } catch 80Quản lý lỗi Gvhd: Nguyễn Tấn Trần Minh Khang { Console.WriteLine(Unknown exception caught); } finally { Console.WriteLine (Close file here.); } } public double DoDivide(double a, double b) { if (b == 0) { DivideByZeroException e = new DivideByZeroException(); e.HelpLink = http://www.libertyassociates.com; throw e; } if (a == 0) throw new ArithmeticException( ); return a / b; } } } Kết quả: Open file here DivideByZeroException! Msg: Attempted to divide by zero. HelpLink: http://www.libertyassociates.com Heres a stack trace: at Programming_CSharp.Test.DoDivide(Double a, Double b) in c:...exception06.cs:line 56 at Programming_CSharp.Test.TestFunc( ) in...exception06.cs:line 22 Close file here.Kết quả liệt kê các phương thức theo trình tự ngược với trình tự chúng được gọi.Đọc kết quả trên như sau: Có một biệt lệ xảy ra tại hàm DoDivide(), hàmDoDivide này được gọi bởi hàm TestFunc().Trong ví dụ này ta tạo một thể hiện của DivideByZeroException DivideByZeroException e = new DivideByZeroException();Do không truyền tham số, thông báo mặc định được dùng: DivideByZeroException! Msg: Attempted to divide by zero.Ta có thể thay thông báo mặc định này bằng cách truyền tham số khi khởi tạo: new DivideByZeroException( You tried to divide by zero which is not meaningful);Trong trường hợp này kết quả sẽ là: DivideByZeroException! Msg:You tried to divide by zero which is not meaningfulTrước khi ném biệt lệ này, ta thiết đặt thuộc tính HelpLink e.HelpLink = http://www.libertyassociates.com;Khi biệt lệ được bắt, chương trình in thông báo và cả đường dẫn đến kết nối giúp đỡ catch (System.DivideByZeroException e) 81Quản lý lỗi Gvhd: Nguyễn Tấn Trần Minh Khang { Console.WriteLine( DivideByZeroException! Msg: {0}, e.Message); Console.WriteLine( HelpLink: {0}, e.HelpLink);Nhờ vậy ta có thể cung cấp các thông tin cần thiết cho người dùng. Sau đó là inStackTrace Console.WriteLine( Heres a stack trace:{0}, e.StackTrace);Ta có kết quả cuối cùng.11.3 Các biệt lệ tự tạoVới các biệt lệ có thể tùy biến thông báo do CLR cung cấp, thường đủ cho hầu hếtcác ứng dụng. Tuy nhiên sẽ có lúc ta muốn thêm nhiều dạng thông tin hơn cho đốitượng biệt lệ, khi đó ta phải tự tạo lấy các biệt lệ mong muốn. Biệt lệ tự tạo bắt buộcthừa kế từ lớp System.Exception. Ví dụ 11-7 mô tả cách tạo một biệt lệ mới.Ví dụ 11-7. Tự tạo biệt lệ using System; namespace Programming_CSharp { public class MyCustomException : System.ApplicationException { public MyCustomException(string message) : base(message) { } } public class Test { public static void Main( ) { Test t = new Tes ...
Nội dung trích xuất từ tài liệu:
Tìm hiểu C# và ứng dụng của C# p 14Quản lý lỗi Gvhd: Nguyễn Tấn Trần Minh Khang11.2 Đối tượng ExceptionĐối tượng System.Exception cung cấp nhiều phương thức và property hữu íchcho việc bẫy lỗi. Chẳng hạn property Message cung cấp thông tin tại sao nó đượcném. Message là thuộc tính chỉ đọc, nó được thiết đặt vào lúc khởi tạo biệt lệ.Property HelpLink cung cấp một kết nối đến tập tin giúp đỡ. Property này có thểđọc và thiết đặt. Property StackTrace chỉ đọc và được thiết lập vào lúc chạy.Trong ví dụ 11-6, property Exception.HelpLink được thiết đặt và nhận về đểthông tin thêm cho người dùng về biệt lệ DivideByZeroException. PropertyStackTrace được dùng để cung cấp các vết của vùng nhớ stack. Nó hiển thịhàng loạt các phương thức đã gọi dẫn đến phương thức mà biệt lệ được ném ra.Ví dụ 11-6. Làm việc với đối tượng Exception using System; namespace Programming_CSharp { public class Test { public static void Main( ) { Test t = new Test( ); t.TestFunc( ); } public void TestFunc( ) { try { Console.WriteLine(Open file here); double a = 12; double b = 0; Console.WriteLine ({0} / {1} = {2}, a, b, DoDivide(a,b)); Console.WriteLine (This line may or may not print); } catch (System.DivideByZeroException e) { Console.WriteLine( DivideByZeroException! Msg: {0}, e.Message); Console.WriteLine( HelpLink: {0}, e.HelpLink); Console.WriteLine( Heres a stack trace: {0} , e.StackTrace); } catch 80Quản lý lỗi Gvhd: Nguyễn Tấn Trần Minh Khang { Console.WriteLine(Unknown exception caught); } finally { Console.WriteLine (Close file here.); } } public double DoDivide(double a, double b) { if (b == 0) { DivideByZeroException e = new DivideByZeroException(); e.HelpLink = http://www.libertyassociates.com; throw e; } if (a == 0) throw new ArithmeticException( ); return a / b; } } } Kết quả: Open file here DivideByZeroException! Msg: Attempted to divide by zero. HelpLink: http://www.libertyassociates.com Heres a stack trace: at Programming_CSharp.Test.DoDivide(Double a, Double b) in c:...exception06.cs:line 56 at Programming_CSharp.Test.TestFunc( ) in...exception06.cs:line 22 Close file here.Kết quả liệt kê các phương thức theo trình tự ngược với trình tự chúng được gọi.Đọc kết quả trên như sau: Có một biệt lệ xảy ra tại hàm DoDivide(), hàmDoDivide này được gọi bởi hàm TestFunc().Trong ví dụ này ta tạo một thể hiện của DivideByZeroException DivideByZeroException e = new DivideByZeroException();Do không truyền tham số, thông báo mặc định được dùng: DivideByZeroException! Msg: Attempted to divide by zero.Ta có thể thay thông báo mặc định này bằng cách truyền tham số khi khởi tạo: new DivideByZeroException( You tried to divide by zero which is not meaningful);Trong trường hợp này kết quả sẽ là: DivideByZeroException! Msg:You tried to divide by zero which is not meaningfulTrước khi ném biệt lệ này, ta thiết đặt thuộc tính HelpLink e.HelpLink = http://www.libertyassociates.com;Khi biệt lệ được bắt, chương trình in thông báo và cả đường dẫn đến kết nối giúp đỡ catch (System.DivideByZeroException e) 81Quản lý lỗi Gvhd: Nguyễn Tấn Trần Minh Khang { Console.WriteLine( DivideByZeroException! Msg: {0}, e.Message); Console.WriteLine( HelpLink: {0}, e.HelpLink);Nhờ vậy ta có thể cung cấp các thông tin cần thiết cho người dùng. Sau đó là inStackTrace Console.WriteLine( Heres a stack trace:{0}, e.StackTrace);Ta có kết quả cuối cùng.11.3 Các biệt lệ tự tạoVới các biệt lệ có thể tùy biến thông báo do CLR cung cấp, thường đủ cho hầu hếtcác ứng dụng. Tuy nhiên sẽ có lúc ta muốn thêm nhiều dạng thông tin hơn cho đốitượng biệt lệ, khi đó ta phải tự tạo lấy các biệt lệ mong muốn. Biệt lệ tự tạo bắt buộcthừa kế từ lớp System.Exception. Ví dụ 11-7 mô tả cách tạo một biệt lệ mới.Ví dụ 11-7. Tự tạo biệt lệ using System; namespace Programming_CSharp { public class MyCustomException : System.ApplicationException { public MyCustomException(string message) : base(message) { } } public class Test { public static void Main( ) { Test t = new Tes ...
Tìm kiếm theo từ khóa liên quan:
Tìm hiểu ngôn ngữ C# C# và .Net Framework lập trình c# ngôn ngữ C# tài liệu c#Tài liệu liên quan:
-
161 trang 131 1 0
-
33 trang 70 0 0
-
Giáo trình Kỹ thuật lập trình nâng cao (Ngành: Tin học ứng dụng) - CĐ Kinh tế Kỹ thuật TP.HCM
119 trang 66 0 0 -
1 trang 45 0 0
-
thủ thuật windows XP hay nhất phần 2
14 trang 43 0 0 -
Các Chủ Đề Tiến Bộ Trong C# part
8 trang 41 0 0 -
Bài giảng Lập trình Windows Form với C#: Chương 1 - Lê Thị Ngọc Hạnh
56 trang 35 0 0 -
Tự học C# bằng hình ảnh cho người mới bắt đầu: Phần 1
88 trang 32 0 0 -
Các Chủ Đề Tiến Bộ Trong C# part 1
19 trang 29 0 0 -
hướng dẫn sử dụng Rhino Ceros phần 6
12 trang 29 0 0