Tài liệu Các Chủ Đề Tiến Bộ Trong C# part 1 pdf

19 386 1
Tài liệu Các Chủ Đề Tiến Bộ Trong C# part 1 pdf

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Lỗi xử lí biệt lệ Khơng quan trọng đoạn mã tốt, chương trình bạn phải ln có khả xử lí lỗi xảy ra.Ví dụ, quy trình xử lí phức tạp , đoạn mã bạn nhận khơng phép đọc file, gửi yêu cầu đến mạng mạng rớt.trong tính ngoại lệ ( exception) vậy, khơng có đủ phương thức dù đơn giản trả mã lỗi tương đương- có khoảng 15 đến 20 lần gọi phương thức lồng nhau,vì bạn thật cần chương trình làm nhảy ngược trở lại xuyên suốt 15 đến 20 lần gọi để nhiệm vụ cách hồn chỉnh xắp sếp lại thứ bừa bộn C# có cách tốt để xử lí loại tình này,bằng chế xử lí biệt lệ ( exception handling) Cách thức xử lí lỗi VB hạn chế, bị giới hạn câu lệnh On Error Goto Nếu bạn học VB, bạn thấy biệt lệ C# mở giới cho việc xữ lí lỗi chương trình bạn Mặt khác,những nhà phát triển Java C++ quen với nguyên tắc biệt lệ ngôn ngữ xử lí lỗi theo cách mà C# sử dụng Những nhà phát triển sử dụng C++ cảnh giác với biệt lệ việc thực thi ẩn C++ xảy ra, điều khơng cần quan tâm C#.Sử dụng biệt lệ mã C# khơng gây ảnh hưởng bất lợi thực thi Những lớp biệt lệ lớp sở Trong C#, biệt lệ đối tượng tạo ( ném ) trạng thái lỗi biệt lệ cụ thể xuất đối tượng chứa đựng thơng tin mà giúp ích cho việc truy ngược lại vấn đề Mặc dù tự tạo lớp biệt lệ riêng ( làm sau này), NET cung cấp cho nhiều lớp biệt lệ định nghĩa trước Những lớp biệt lệ Trong phần xem xét cách tổng quát vài biệt lệ mà có giá trị lớp Có số lượng lớn lớp biệt lệ mà Microsoft định nghĩa, ta khơng thể xem xét tồn chúng danh sách toàn diện đây.tuy nhiên biểu đồ lớp biểu diễn vài số chúng Tất lớp biểu đồ nằm namspace system, phần IOexception lớp dẫn xuất từ IOException vài phần nằm namspace System.IO, mà có liên quan đến việc đọc viết liệu lên tập tin.Nói chung, khơng có namspace cụ thể cho biệt lệ;những lớp biệt lệ nên đươc đặt namspace tương đuơng lớp mà chúng sinh - lí biệt lệ có liên quan đến IO nằm namspace System.IO, bạn tìm thấy lớp biệt lệ nằm vài namspace lớp sở Những lớp biệt lệ có đặc điểm chung ,System.Exception dẫn xuất từ System.Object Nói chung bạn khơng nên sinh đối tượng System.Exception từ mã bạn, khơng đưa thơng tin hữu ích cho trạng thái lỗi Có lớp quan trọng hệ thống lớp dẫn xuất từ System.Exception : System.SystemException - sử dụng cho biệt lệ thường xuyên sinh thời gian chạy NET,hoặc lỗi chung thường sinh hầu hết ứng dụng , ví dụ StackOverflowException đuợc sinh thời gian chạy NET thăm dị thấy Stack đầy Mặt khác, bạn chọn để sinh ArgumentException,hoặc lớp đoạn mã bạn.nếu bạn thấy phương thức vừa đưọc gọi với đối số không tương thích.những lớp System.SystemException bao gồm việc trình bày lỗi nghiêm trọng không nghiêm trọng System.ApplicationException - lớp quan trọng dùng cho lớp biệt lệ định nghĩa hãng thứ ba ( hay gọi tổ chức khác với Microsoft), Vì lí đó, bạn định nghĩa biệt lệ bao phủ trạng thái lỗi ứng dụng bạn ,bạn nên dẫn xuất cách trực tiếp hay gián tiếp từ System.ApplicationException Chúng ta không thảo luận tất lớp biệt lệ đuợc biểu diễn biểu đồ , hầu hết mục đích sử dụng thể rỏ ràng qua tên chúng Như đề cập, StackOverflowException xuất vùng nhớ đươc dùng cho Stack bị đầy.tràn Stack xuất hiện, phương thức gọi đệ quy liên tiếp Đây lỗi nghiêm trọng.bởi ngăn ứng dụng bạn làm điều ngoại trừ việc tắt Một OverflowException xảy bạn cố gắng ép số int -40 vào số uint ngữ cảnh Checked Tuy nhiên trường hợp xử lí biệt lệ, lí thường dùng việc thêm vào lớp thừa kế đơn giản dùng để rõ trạng thái lỗi cụ thể thường không cần để nạp chồng phương thức thêm ( người ta thường thêm vào thuộc tính mà mang thơng tin thêm trạng thái lỗi.) ví dụ bạn có lớp ArgumentException sở định phương thức, gọi giá trị khơng tương thích, truyền vào, lớp ArgumentNullException dẫn xuất từ lớp này, mà định đặc biệt đối số NULL truyền vào Đón bắt biệt lệ Cho bạn có đối tượng biệt lệ có giá trị , làm sử dụng chúng đoạn mã để bẫy trạng thái lỗi? Để giải điều C# bạn thường phải chia chương trình bạn thành khối thuộc kiểu khác : Khối try chứa đựng đoạn mã mà có dạng phần thao tác bình thường chương trình bạn, đoạn mã gặp phải vài trạng thái lỗi nghiêm trọng Khối catch chứa đựng đoạn mã mà giải trạng thái lỗi nghiêm trọng đoạn try Khối finally chứa đựng đoạn mã mà dọn dẹp tài nguyên làm hành động mà bạn thường muốn làm xong vào cuối khối try hay catch điều quan trọng phải hiểu khối finally thực thi dù có hay khơng có biệt lệ ném ra.bởi mục tiêu khối finally chứa đựng đoạn mã rõ ràng mà ln thực thi trình biên dịch báo lỗi bạn đặt lệnh return bên khối finally Vậy làm khối gắn kết lại với để bẫy lỗi ? cách mà làm sau : Dịng thực thi bước vào khối try Nếu khơng có lỗi xuất hiện, việc thực thi tiến hành cách bình thường xuyên suốt khối try, đến cuối khối try, dòng thực thi nhảy đến khối finally ( bước 5), nhiên, lỗi xuất khối try,thực thi nhảy đến khối catch ( bước tiếp theo) trạng thái lỗi xử lí khối catch vào cuối khối catch , việc thực thi chuyển cách tự động đến khối finally khối finally thực thi Cú pháp C# sử dụng để thể tất điều cụ thể sau: try { // mã cho việc thực thi bình thường } catch { // xử lí lỗi } finally { // dọn dẹp } thực , có vài điều thay đổi cú pháp - Ta bỏ qua khối finally - Ta cung cấp nhiếu khối catch mà ta muốn xử lí kiểu lỗi khác - Ta bỏ qua khối catch, trường hợp cú pháp phục vụ không xác định biệt lệ , phải đảm bảo mã khối finally thực thi việc thực thi rời khỏi khối try Nhưng điều đặt câu hỏi : đoạn mã chạy khối try, làm biết chuyển đến khối catch lỗi xuất hiện? lỗi thăm dò, mã làm việc biết đến ném biệt lệ , nói cách khác , lớp đối tượng biệt lệ ném nó: throw new OverflowException(); Ở có thể đối tượng biệt lệ lớp OverflowException máy tính gặp câu lệnh throw bên khối try, tìm khối catch kết hợp với khối try, xác định khối catch việc kiểm tra lớp biệt lệ mà khối catch kết hợp với ví dụ, đối tượng OverflowException đuợc ném việc thực thi nhảy vào khối catch sau: catch (OverflowException e) { Nói cách khác, máy tính tìm khối catch mà định thể lớp biệt lệ phù hợp một lớp ( lớp sở) Giả sử, lúc xem xét đối số, có lỗi nghiêm trọng xảy nó: lỗi tràn mảng biên.giả sử đoạn mã chứa đựng hai biến luậnlý Overflow OutOfBounds , mà định liệu trạng thái lỗi có tồn không Chúng ta thấy lớp biệt lệ định nghĩa trước tồn để định tràn (OverflowException);tương tự lớp IndexOutOfRangeException tồn để xử lí mảng ngồi biên Bây nhìn vào khối try sau: try { // mã cho thực thi bình thường if (Overflow == true) throw new OverflowException(); // xử lý nhiều if (OutOfBounds == true) throw new IndexOutOfRangeException(); // tiếp tục xử lí bình thường } catch (OverflowException e) { // xử lí lỗi cho trạng thái lỗi tràn } catch (IndexOutOfRangeException e) { // xử lí lỗi cho trạng thái lỗi mục nằm vùng } finally { // dọn dẹp } Thực thi nhiều khối catch Cách dễ dàng để xem làm khối try catch block làm việc thực tập với vài ví dụ: ví dụ SimpleExceptions lặp lại việc hỏi người sử dụng gõ vào số trình bày nhiên mục đích ví dụ , giả sử số cần gõ phải từ > chương trình khơng thể xử lý số cách xác ném biệt lệ người sử dụng gõ mộ thử ngồi vùng Chương trình tiếp tục hỏi số người sử dụng nhấn enter mà khơng gõ phím khác using System; namespace Wrox.ProCSharp.AdvancedCSharp { public class MainEntryPoint { public static void Main() { string userInput; while ( true ) { try { Console.Write("Input a number between and " + "(or just hit return to exit)> "); userInput = Console.ReadLine(); if (userInput == "") break; int index = Convert.ToInt32(userInput); if (index < || index > 5) throw new IndexOutOfRangeException( "You typed in " + userInput); Console.WriteLine("Your number was " + index); } catch (IndexOutOfRangeException e) { Console.WriteLine("Exception: " + "Number should be between and " + e.Message); } catch (Exception e) { Console.WriteLine( "An exception was thrown Message was: " + e.Message); } catch { Console.WriteLine("Some other exception has occurred"); } finally { Console.WriteLine("Thank you"); } } } } } Lõi đoạn mã vòng lặp loop, mà tiếp tục sử dụng console.readline() để hỏi người sử dụng cho việc nhập.readline() trả chuổi, điều làm chuyển thành số kiểu int sử dụng phương thức system.Convert.ToInt32() Lớp System.Convert chứa đựng phương thức hữu ích khác để biểu diễn chuyển đổi liệu, cung cấp thay đến phương thức int.Parse() Nói chung System.Convert chứa đựng phương thức để thực thi nhiều kiểu chuyển đổi khác , nhắc lại trình biên dịch C# xem int thể lớp sở System.int32 điều quan trọng thông số truyền đến khối catch có phạm vi khối catch -chính mà sử dụng tên thông số , e, liên tiếp khối block đoạn mã phía Trong đoạn mã kiểm tra chuỗi rỗng, điều kiện để thoát khỏi vòng lặp while ý cách câu lệnh break thực ngắt khỏi khối try vòng lặp while tất nhiên việc thực thi ngắt khỏi khối try, câu lệnh Console.Writeline() khối finally thực thi trình bày lời ch đây, nhìn chung , làm số nhiệm vụ điều khiển việc đóng file gọi phương thức Dispose() đối tượng khác để thực việc dọn dẹp.mỗi lần máy tính rời khỏi khối finally, đơn giản chuyển việc thực thi đến câu lệnh thực thi, có khối finally khơng tình baỳ.trong trường hợp trở lại đầu vòng lặp while bươc khối try lần Kế tiếp , kiểm tra trạng thái biệt lệ: if (index < || index > 5) throw new IndexOutOfRangeException("You typed in " + userInput); Khi ném biệt lệ, cần chọn kiểu biệt lệ để ném.mặc dù lớp System.Exception có giá trị, thật dùng lớp sở cách lập trình khơng hay ném thể lớp biệt lệ, khơng chuyển thơng tin chất trạng thái lỗi thay vào microsoft định nghĩa nhiều lớp biệt lệ khác mà dẫn xuất từ system.exception lớp phù hợp với kiểu biệt lệ cụ thể bạn có quyền tự định nghĩa riêng bạn.ý tưởng bạn đưa nhiều thông tin tốt trạng thái lỗi cụ thể cách ném thể lớp phù hợp với trạng thái lỗi cụ thể.trong lúc naỳ, bạn chọn System.IndexOutOfRangeException lưạ chọn tốt tình naỳ IndexOutOfRangeException có vài hàm dựng.cái mà chọn lấy chuỗi mô tả lỗi, thay vào chọn để dẫn xuất đối tượng Exception tuỳ biến riêng ta mà mô tả trạng thái lỗi ngữ cảnh ứng dụng Giả sử người sử dụng gõ số mà không nằm điều đón câu lệnh if đối tượng IndexOutOfRangeExceptionsẽ khởi tạo ném.vào lúc máy tính khỏi khối try tìm khối catch mà xử lí IndexOutOfRangeException khối catch mà đến khối : catch (IndexOutOfRangeException e) { Console.WriteLine( "Exception: Number should be between and 5." + e.Message); } Bởi khối catch lấy thông số lớp tương đương , điều truyền qua thể biệt lệ thực thi.trong trường hợp này, trình bày,1 thơng báo lỗi thuộc tính exception.message (đáp lại chuỗi mà truyền đến hàm dựng IndexOutOfRange).sau thực thi khối catch , điều khiển chuyển đến khối finally, khơng có biệt lệ xuất Chú ý cung cấp khối catch khác : catch (Exception e) { Console.WriteLine("An exception was thrown Message was: " + e.Message); } Khối catch có khả xử lý IndexOutOfRangeException khơng có kiện biệt lệ đón bắt khối catch trước- tham chiếu đến lớp sở chuyển đến thể mộ lớp dẫn xuất từ nó.và tất biệt lệ mà dẫn xuất từ system.exception khối catch không thực thi? câu trả lời máy tính thực thi khối catch thích hợp mà tìm thấy khối catch thứ hai lại nằm ? thật khơng đoạn mã ta bao phủ khối try ,mà bên khối, thực gọi phương thức riêng biệt namspace system ( Console.ReadLine(), Console.Write(), and Convert.ToInt32()), phương thức ném biệt lệ Nếu gõ thứ khơng phải số - say hello ,sau phương thức convert.toin32() ném biệt lệ lớp System.FormatException, để định chuỗi truyền vào toin32() không nằm định dạng mà chuyển thành kiểu int điều xảy ra, máy tính truy vết xuyên suốt phương thức gọi , tìm hàm xử lí mà xử lí biệt lệ khối catch ( mà bắt IndexOutOfRangeException) không thực hiện.máy tính tìm đến thứ hai.cái thi hành FormatException dẫn xuất từ exception, thực thể FormatException truyền thông số Cấu trúc ví dụ thực kiểu tình đẹp với nhiều khối catch.chúng ta bắt đầu với khối catch thiết kế để bẫy trạng thái lỗi cụ thể sau đó, hồn thành với nhiều khối catch bao phủ lỗi mà khơng viết hàm xử lí lỗi cụ thể.việc xếp khối catch quan trọng.nếu viết tên khối thứ tự ngược , mã khơng phiên dịch khối catch thứ hai khơng tham chiếu đến ( khối catch exception bắt tất biệt lệ) Tuy nhiên nhìn vào khối catch thứ ba: catch { Console.WriteLine("Some other exception has occurred"); } Đây khối catch chung cho tất - khơng nhận thơng số lý khối block bắt biệt lệ ném đoạn mã không viết C#, chí khơng quản lí C# bạn thấy, địi hỏi ngôn ngữ C# mà thực thể lớp dẫn xuất từ system.exception ném biệt lệ.nhưng ngơn ngữ khác khơng có giới hạn này- ví dụ C++ cho phép biến ném biệt lệ.nếu mã ta gọi thư viện hay tập hợp mà viết ngơn ngữ khác ,sau tìm biệt lệ ném mà khơng dẫn xuất từ system.exception , nhiều trường hợp , chế NET bẫy biệt lệ chuyển chúng thành đối tượng biệt lệ NET nhiên khơng có nhiều khối catch làm điều này, khơng biết lớp biệt lệ trình bày Bây ta chạy đoạn mã ví dụ mà ta đả phân tích minh họa cho tình nhập khác xảy ra.và việc IndexOutOfRangeException FormatException ném: SimpleExceptions Input a number between and (or just hit return to exit)> Your number was Thank you Input a number between and (or just hit return to exit)> Your number was Thank you Input a number between and (or just hit return to exit)> 10 Exception: Number should be between and You typed in 10 Thank you Input a number between and (or just hit return to exit)> hello An exception was thrown Message was: Input string was not in a correct format Thank you Input a number between and (or just hit return to exit)> Thank you Đón bắt biệt lệ từ đoạn mã khác không nằm chương trình Ở ví dụ trước,ta minh họa hai biệt lệ.1 IndexOutOfRangeException,được tung mã ta.cái lại, FormatException tung từ bên torng lớp sở.ta thường gặp điều này.tuy nhiên mã torng thư viện bắt biệt lệ, xem trách nhiệm mã client ( mã mà ta viết) Thông thường, ta tìm biệt lệ ném từ thư viện lớp sở ta vá lỗi mục đích ta đảm bảo vào thời gian chạy chươn gtrình biệt lệ thực xuất vào lúc có teh63 xử lí theo cách theo ý ta Những thuộctính system.exception Trong ví dụ xem xét thuộc tính message, đối tượng exception nhiên có số thuộc tính lớp system.exception - helplink: liên kết đến tập tin trợ giúp mà cung cấp nhiều thông tin biệt lệ - message: chuỗi mô tả trạng thái lỗi - source : tên ứng dụng đối tượng mà gây lỗi - Stacktrace: chi tiết phương thức gọi stack ( để giúp đỡ truy dấu vết phương thức mà ném biệt lệ) - TargetSite: đối tượng phản ánh NET mà mô tả phương thức ném biệt lệ - InnerException :nếu biệt lệ ném từ bên khối catch , chứa đựng đối tượng biệt lệ mà gửi đoạn mã vào khối catch Trong thuộc tính , StackTrace TargetSite cung cấp tự động thời gian chạy NET dấu vết Stack có giá trị Source ln điền thời gian chạy NET tên tập hợp, mà biệt lệ đuợc phát Trong message ,helplink,innerexception phải điền mã mà ném biệt lệ, việc thiết lập thuộc tính trước Khi ném biệt lệ,do ví dụ mã để ném biệt lệ : if (ErrorCondition == true) { Exception myException = new ClassmyException("Help!!!!"); myException.Source = "My Application Name"; myException.HelpLink = "MyHelpFile.txt"; throw myException; } Điều xảy nêu biệt lệ khơng xử lí Thỉnh thoảng biệt lệ tung , khơng có khối catch mã xử lí loại biệt lệ ví dụ SimpleExceptions cho thấy điều giả sử ví dụ bỏ qua FormatException khối catch bắt tất cung cấp khối mà bẩy lỗi IndexOutOfRangeException.trong tình điều xảy FormatException tung ra? câu trả lời thời gian chạy NET bắt Sau phần xem làm lồng khối try , thật ví dụ có sẵn khối try lồng phiá sau chương trình thời gian chạy NET đặ tồn chương trình bạn khối try khổng lồ- điều làm chương trình NET.khối try có hàm xử lí catch mà bắt kiểu biệt lệ nào.nếu biệt lệ mã khơng xử lí ,thì truyền cho thời gian chạy NET đón bắt nhiên kết không bạn muốn , nghĩa chương trình bạn bị ngắt người sử dụng nhìn thấy thơng báo phàn nàn mã bạn khơng xử lí biệt lệ thêm vào thơng tin mà NET nhận đuợc.tuy nhiên biệt lệ đón bắt Lồng khối try Một đặc tính tốt biệt lệ lồng khối try khối try khác ví dụ : try { // Point A try { // Point B } catch { // Point C } finally { // Dọn dẹp } // Point D } catch { // xử lí lỗi } finally { // dọn dẹp } Nếu biệt lệ tung bên khối try bên khối try bên (điểm a d), tình giống bạn học trước Nếu biệt lệ đưọc ném bên khối try ( điểm B) có khối catch thích hợp để xử lí biệt lệ này, biệt lệ xử lí khối finally bên thực thi trước việc thực thi tiếp tục bên khối try nằm ( điểm D) giả sử biệt lệ xuất bên khối try khơng có khối catch để xử lí lúc khối finally thực thi, sau thời gian chạy NET khơng có chọn lựa khác rời khỏi tồn khối try tìm kiếm hàm xử lí biệt lệ thích hợp nơi khối catch ngồi tìm xử lí nhảy dến khối finally ngồi.nếu khơng thấy tìm tiếp tục,nếu khơng thấy khối finally ngồi thi hành sau chuyển cho thời gian chạy NET Một điểm thú vị biệt lệ tung điểm C chương trình điểm C phải xử lí biệt lệ ném điểm B.điều hợp pháp ném biệt lệ khác từ bên khối catch,trong trường hợp , biệt lệ đối xử ném khối try ngồi.và thực thi khối finally trong, trước khối catch ngồi xử lí.nếu biệt lệ ném từ khối finally , điều khiển chuyển đến hàm xử lí tương đương tốt nhất, với việc tìm kiếm bắt đầu khối catch Quan trọng : việc ném biệt lệ từ khối catch hay finally hợp lệ Chúng ta biết làm khối try lồng làm việc sau tìm hiểu xem phải làm điều ? có lí : - Để cập nhật kiểu biệt lệ ném - Cho phép kiểu biệt lệ khác xử lí nơi khác mã cuả bạn Cập nhật kiểu biệt lệ Điều hữu ích kiểu biệt lệ ném khơng mơ tả đầy đủ vấn đề Xử lí biệt lệt khác nơi khác Lý thứ hai để lồng khối try để kiểu biệt lệ khác xử lí vị trí khác mã bạn Một ví dụ hay cho điều bạn có vịng lặp nơi mà trạng thái biệt lệ khác xuất hiện, vài số chúng nghiêm trọng đủ để bạn cần phải bỏ khỏi vịng lặp.trong khác nghiêm trọng đơn giản đòi hỏi bạn bỏ phần lặp di chuyển đến phần lặp khác vòng lặp bạn.bạn làm điều cách cài khối try bên vịng lặp mà xử lí lỗi khơng nghiêm trọng,và khối try ngồi xử lí lỗi nghiêm trọng Những lớp biệt lệ người sử dụng định nghĩa Trong ví dụ sau, gọi MortimerColdCall chứa đựng khối try lồng nhau, minh họa thực tập việc định nghĩa lớp biệt lệ tuỳ biến riêng ta.và tung biệt lệ khác từ bên khối try Trong ví dụ ,ta làm quen với cơng ty điện thoại di động mortimer phones ( phụ lục A).giả sử cơng ty muốn có thêm khách hàng đội kinh doanh cty đưa danh sách người mời trở thành khách hàng để dùng cho kinh doanh để làm điều ta có tập tin lưu tên người gọi.tập tin nên định dạng chuẩn mà dòng chứa số người tập tin,và dòng chứa đựng tên người ví dụ : Avon from 'Blake's 7' Zbigniew Harlequin Simon Robinson Christian Peak Chương trình ta hỏi người sử dụng tên tập tin : đơn giản đọc trình bày tên tập tin nghe đơn giản có vài lỗi xảy ra: Tên tập tin không tồn biệt lệ FileNotFound tung tập tin định dạng khơng đúng.có vấn đề có : thứ nhất: dịng số nguyên Thứ hai :số tên khơng khớp với số ngun dịng đầu.để giải vấn đề phải tự xây dựng lấy lớp biệt lệ , ta đặt tên ColdCallFileFormatException Cũng có vấn đề khác nhiên khơng nghiêm trọng , sử dụng khối try bên ví dụ người gián điệp công ty khác ( chử đầu Z) bỏ qua người xử lí ngưịi biệt lệ gọi LandLineSpyFoundException , tất nhiên đối tuợng biệt lệ tuỳ biến khác cuối thực thi ví dụ việc soạn lớp,ColdCallFileReader, mà trì việc nối tập tin goị-lạnh ( cold-call ) xuất liệu từ nó.chúng ta soạn mã theo cách an toàn , nghĩa phương thức ném biệt lệ chúng gọi khơng hợp lí, ví dụ phương thức đọc tập tin đưọc gọi trước phương thức mở tập tin để xử lí điều ta soạn lớp biệt lệ khác : UnexpectedException Đón bắt biệt lệ người sử dụng định nghĩa : Chúng ta bắt đầu với phương thức main() ví dụ MortimerColdCall mà bắt biệt lệ riêng ta using System; using System.IO; namespace Wrox.ProCSharp.AdvancedCSharp { class MainEntryPoint { static void Main() { string fileName; Console.Write("Please type in the name of the file " + "containing the names of the people to be cold-called > "); fileName = Console.ReadLine(); ColdCallFileReader peopleToRing = new ColdCallFileReader(); try { peopleToRing.Open(fileName); for (int i=0 ; i people.txt Avon from 'Blake's 7' LandLine spy found, with name Zbigniew Harlequin Simon Robinson Christian Peak All callees processed correctly MortimerColdCall Please type in the name of the file containing the names of the people to be cold-called > people2.txt Avon from 'Blake's 7' LandLine spy found, with name Zbigniew Harlequin Simon Robinson Christian Peak The file people2.txt appears to have been corrupted Details of the problem are: Not enough names MortimerColdCall Please type in the name of the file containing the names of the people to be cold-called > people3.txt The file people3.txt does not exist Code for Download : SimpleException MortimerColdCall ... khơng nhận thơng số lý khối block bắt biệt lệ ném đoạn mã không viết C#, chí khơng quản lí C# bạn thấy, địi hỏi ngôn ngữ C# mà thực thể lớp dẫn xuất từ system.exception ném biệt lệ.nhưng ngơn... StreamReader(), đọc dòng tập tin Trường IsDispose định liệu phương thức Dispose() có gọi hay khơng.Isopen dùng cho việc kiểm tra lỗi -trong trường hợp ,kiểm tra xem liệu Streamreader có thực nối đến tập tin... diễn chuyển đổi liệu, cung cấp thay đến phương thức int.Parse() Nói chung System.Convert chứa đựng phương thức để thực thi nhiều kiểu chuyển đổi khác , nhắc lại trình biên dịch C# xem int thể

Ngày đăng: 26/01/2014, 14:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan