‫Chào mừng trở lại.
‫Trong video này, cuối cùng chúng tôi sẽ khắc phục các sự cố mà chúng tôi gặp phải trong chương trình của chúng tôi ở đây, chương trình ảo của chúng tôi
‫mà chúng tôi đã tạo.
‫Và chúng tôi cũng sẽ xem xét chương trình phòng thủ.
‫Vì vậy, ý tưởng của lập trình phòng thủ là tạo ra mã an toàn thực sự đã suy nghĩ về những vấn đề có thể phát sinh, bởi vì trong trường hợp
‫này, các vấn đề có thể phát sinh là, ví dụ, danh sách trống hoặc chúng ta muốn
‫có quá nhiều bạn bè. , vì vậy chúng tôi muốn mời nhiều bạn bè hơn những gì chúng tôi có.
‫Và trong trường hợp này, danh sách là một danh sách siêu đơn giản mà chúng tôi đã tạo theo cách thủ công.
‫Nhưng hãy tưởng tượng nó từ một cơ sở dữ liệu.
‫Vì vậy, nó đến từ cơ sở dữ liệu hoặc nó đến từ web, từ cơ sở dữ liệu đám mây hoặc những thứ tương tự.
‫Và sau đó nó sẽ là một câu chuyện siêu khác bởi vì chúng ta sẽ không bao giờ biết danh sách lớn như thế nào trong trường hợp
‫này.
‫Chúng ta có thể thấy nó trong mã, nhưng chúng ta có thể không biết nó tùy thuộc vào nó đến từ đâu.
‫Trong trường hợp này, chúng tôi phải lường trước các vấn đề khác nhau có thể phát sinh và chúng tôi có thể tự kiểm tra
‫chúng khi phát triển.
‫Ví dụ, chúng tôi đã làm điều đó, phải không?
‫Chúng tôi đã nhập thêm những người bạn mà chúng tôi có trong danh sách.
‫Vì vậy, nó là một trong những đơn giản.
‫Chúng tôi chỉ chạy điều này và sau đó chúng tôi nhận được đối số này ra khỏi phạm vi ngoại lệ.
‫Nhưng nơi chúng tôi nhận được nó là một điều thú vị.
‫Vì vậy, chúng tôi đang hiểu nó ở điểm của phương pháp khác nhau bên nhận của chúng tôi mặc dù vấn đề nằm ở một
‫nơi khác.
‫Bởi vì nếu chúng ta nhìn vào nó, nó cho biết danh sách tên ngắn nhất bằng không.
‫Vì vậy, chúng tôi đang cố gắng truy cập một phần tử danh sách không có sẵn vì chúng tôi đã vượt qua danh sách, kết bạn cùng nhóm
‫và chúng tôi chuyển danh sách này qua đây.
‫Vì vậy, nếu chúng ta xem chúng ta lấy danh sách này từ đâu, thì đó có thể là một điểm khởi đầu tốt vì chúng ta có thể thấy ở đây chúng ta
‫đang cố gắng truy cập vào thứ gì đó không có sẵn.
‫Vì vậy, vấn đề với những gì được tạo sẵn là gì?
‫Vì vậy, chúng ta có thể nhìn vào dòng này ở đây, kết bạn với bên.
‫Đó là nơi nó được gọi.
‫Và chúng ta có thể thấy.
‫Được rồi, đó là bộ đệm.
‫Đúng?
‫Vì vậy, chúng tôi nhận được một bộ đệm, đó là danh sách này ở đây.
‫Vì vậy, những gì chúng tôi nhận được là một danh sách từ cấp cao nhất.
‫Vì vậy, một lần nữa, chúng ta có thể thấy, được rồi, chúng ta nhận được danh sách rất nhiều người như vậy và đây là nơi
‫chúng ta nhận được giá trị từ đó.
‫Và tốt, một điểm tốt để kiểm tra xem danh sách có tốt hay không thực sự nằm trong phương pháp Get Party Friends của chúng tôi vì ở đây chúng tôi sẽ có
‫được danh sách, đúng không.
‫Vì vậy, tại thời điểm này chúng tôi có một danh sách để chúng tôi có thể kiểm tra danh sách này.
‫Chúng tôi có thể xem liệu danh sách này có đủ tốt cho những gì chúng tôi muốn làm hay không.
‫Và những gì chúng tôi muốn làm là viết một cái gì đó dựa trên tài khoản của các phần
‫tử trong danh sách đó để chúng tôi có thể kiểm tra xem số lượng có lớn hơn số chấm của danh sách hay không.
‫Và đây là danh sách đã được chuyển cho chúng tôi.
‫Vì vậy, nếu đúng như vậy, những gì chúng ta có thể làm là chúng ta có thể in một cái gì đó, đừng làm như vậy hoặc lỗi hoặc những
‫thứ tương tự.
‫Nhưng một điều tốt hơn nữa mà chúng tôi có thể làm là chúng tôi có thể làm cho chương trình bị sập.
‫Vì vậy, chúng tôi biết rằng chương trình có sự cố, nhưng đồng thời, chúng tôi dừng chương trình thực thi ở giai đoạn rất sớm vì hãy tưởng tượng chúng
‫tôi có kết nối với cơ sở dữ liệu và bây giờ chúng tôi đang tạo ra tất cả các lỗi khác nhau này hoặc chúng tôi
‫chỉ cần xem qua mã và phương thức này get party friend đang chạy và giả sử nó được kết nối với cơ sở dữ
‫liệu và nó ghi một cái gì đó vào cơ sở dữ liệu và sau đó chúng ta
‫chạy lại mã.
‫Và vì một số lý do mà trạng thái cơ sở dữ liệu đã thay đổi và bây giờ chúng tôi đang suy nghĩ vì dữ liệu được hiển thị
‫với chúng tôi là hoàn toàn vô nghĩa và chúng tôi không thể làm việc với nó.
‫Vì vậy, sửa lỗi đó sẽ là một vấn đề thực sự.
‫Được rồi.
‫Vì vậy, chúng tôi đã có thể nắm bắt nó sớm nhất có thể để chúng tôi có thể đơn giản ném một đối số ra khỏi phạm vi ngoại lệ ở đây.
‫Vì vậy, hãy ném đối số mới ra khỏi phạm vi ngoại lệ vì đó là những gì chúng ta đang làm đúng.
‫Và một đối số ngoại lệ có nhiều quá tải.
‫Vì vậy, chúng ta có thể có cái này ở đây với tên tham số.
‫Chúng tôi có thể có một thông báo với ngoại lệ hoặc tên tham số với một thông báo.
‫Vì vậy, ở đây tôi chỉ có thể nói điều gì đó như, được rồi, số đếm là vấn đề và số lượng không thể lớn hơn các phần
‫tử trong danh sách hoặc một cái gì đó tương tự.
‫Vì vậy, đó sẽ là một ví dụ cho những gì chúng tôi có thể hiển thị.
‫Vì vậy, hãy chạy lại vì bây giờ chúng ta có thể thực sự bắt được lỗi này hoặc ít nhất là ném một đối số ra khỏi phạm
‫vi ngoại lệ khi chúng ta gặp lỗi này.
‫Được rồi.
‫Vì vậy, chúng ta có thể thấy ngoại lệ khi xử lý, nó nói rằng đối số hệ thống ngoài phạm vi ngoại
‫lệ không thể lớn hơn các phần tử trong số tham số danh sách.
‫Vì vậy, đó là kết quả của những gì chúng tôi đã viết ở đây.
‫Vì vậy, đây là cách ngoại lệ sẽ như thế nào.
‫Vì vậy, bây giờ chúng tôi biết vấn đề là gì.
‫Nó biểu cảm hơn một chút.
‫Ngay trước khi vấn đề không thực sự ở đây.
‫Vì vậy, hãy để tôi bình luận hai dòng ra.
‫Vấn đề không được giải quyết ở thời điểm này, nhưng nó đã được giải quyết sâu hơn.
‫Nó đã được ném vào phương pháp get khác của chúng tôi.
‫Vì vậy, nó ở dòng 42.
‫Nhưng vấn đề thực tế đã nảy sinh sớm hơn rất nhiều.
‫Đúng.
‫Và chỉ mục nằm ngoài phạm vi ngoại lệ.
‫Đó cũng là một tuyên bố rất chung chung, đúng.
‫Nó có thể là bất cứ điều gì.
‫Đúng.
‫Vì vậy, việc nắm bắt nó sớm hơn sẽ giúp chúng tôi biết được vấn đề mà chúng tôi gặp phải.
‫Vì vậy, những gì chúng ta có thể làm, tất nhiên là chúng ta có thể nói, được rồi, khi chúng ta nhập giá
‫trị này và giả sử giá trị này đến từ một người dùng nhập một giá trị, phải không?
‫Vì vậy, bạn có thể nhập bất kỳ giá trị nào từ 0 đến số lượng phần tử danh sách mà chúng tôi có.
‫Vì vậy, chúng tôi có thể bắt nó sớm hơn.
‫Chúng tôi có thể làm một bài kiểm tra ngay cả ở đây.
‫Vì thế nếu.
‫Bạn bè.
‫Số chấm là.
‫Nhỏ hơn giá trị mà chúng tôi nhập ở đây và chúng tôi có thể nhận lại giá trị này từ người dùng.
‫Sau đó, chúng tôi có thể cung cấp cho họ một tin nhắn, phải không?
‫Chúng tôi sẽ không ném ngoại lệ của chúng tôi.
‫Chúng tôi sẽ không làm cho chương trình của chúng tôi gặp sự cố.
‫Chúng tôi chỉ yêu cầu người dùng nhập một giá trị mới.
‫Nhưng chúng tôi không làm điều đó ở đây vì chúng tôi là một lập trình viên có thể nhập giá trị ở đây và chúng tôi buộc các lỗi này theo cách thủ
‫công ngay bây giờ.
‫Đúng.
‫Vì vậy, đó là một cách để giải quyết nó hoặc thực sự là một cách để nắm bắt nó từ sớm.
‫Bây giờ, hãy nói.
‫Chúng tôi nhập một giá trị ngu ngốc ở đây, chẳng hạn như trừ đi một.
‫Được rồi, bây giờ chúng ta hãy chạy lại nó.
‫Trên thực tế, hãy chạy lại nó.
‫Và chương trình của chúng tôi dường như hoạt động, nhưng nó không hiển thị bất cứ điều gì ở đó.
‫Vì vậy, nó không hiển thị bất kỳ.
‫Lỗi không ném ra bất kỳ lỗi nào, nhưng nó không hiển thị bất kỳ người bạn nào.
‫Chà, chương trình của chúng tôi dường như hoạt động với điểm trừ một vì chúng tôi cố gắng lấy trừ một phần tử trong danh sách
‫của mình và tốt, nó không cung cấp cho chúng tôi bất kỳ thông tin có giá trị nào.
‫Vì vậy, tất nhiên, bây giờ những gì chúng ta có thể làm là chúng ta có thể thêm một điều kiện khác vào đây.
‫Số đếm phải lớn hơn bằng không.
‫Nếu không phải như vậy, thì chúng ta có thể viết một cái gì đó như được gọi là không thể lớn hơn
‫các phần tử trong danh sách hoặc số 0 thấp hơn.
‫Vì vậy, đó chỉ là một cách diễn đạt.
‫Và bây giờ nếu chúng tôi chạy lại nó, chúng tôi sẽ ném ra lỗi này.
‫Vì vậy, đó là điều mà chương trình không ném một mũi tên trước đây, nhưng bây giờ chúng tôi với tư cách là một nhà phát triển đã hiểu, được rồi, đây
‫là trạng thái mà chúng tôi không muốn có.
‫Đây là một tình huống mà chúng tôi không muốn làm việc.
‫Và như tôi đã nói, chúng tôi sẽ cắt giảm tốt, chúng tôi sẽ cố gắng lấy giá trị này từ một nơi nào đó và chúng tôi sẽ cố
‫gắng nắm bắt nó ngay cả trước đó.
‫Bây giờ, hãy giả sử chúng ta có một tình huống thậm chí còn hài hước hơn.
‫Vì vậy, chúng tôi có một tình huống trong đó danh sách bạn bè của tôi trống rỗng.
‫Vì vậy, tôi sẽ tạo một danh sách trống ở đây.
‫Giống như, vì vậy bây giờ điều này sẽ được bình luận và bây giờ chúng tôi có danh sách trống này.
‫Hãy chạy lại và xem chương trình của chúng ta có còn hoạt động hay không.
‫Và bây giờ chúng ta vẫn lấy đối số của mình ra khỏi phạm vi ngoại lệ.
‫Vì vậy, điều đó khá tuyệt.
‫Vì vậy, có vẻ như ngoại lệ mà chúng tôi đã tạo ở đây khắc phục được sự cố này ngay cả khi chúng tôi không
‫phải xem danh sách theo cách thủ công mặc dù nó trống, phải không?
‫Vì vậy, nếu chúng ta nhìn vào danh sách bạn bè của mình, danh sách bạn bè của chúng ta trống rỗng, nhưng cuối cùng chúng ta lại nhận được số không.
‫Vì vậy, mặc dù danh sách là null, danh sách vẫn bằng không.
‫Vì vậy, giá trị mà chúng ta nhận được ở đó vẫn là số không.
‫Nhưng đó không phải là tất cả những gì chúng ta có thể thực sự ép buộc.
‫Vì vậy, thay vì vượt qua Pháp với Pháp là danh sách trống này, chúng tôi thực sự có thể vượt qua null ở đây.
‫Vì vậy, giả sử vì lý do nào đó, chúng tôi không thể tạo danh sách này vì kết nối cơ sở dữ liệu không hoạt động hoặc
‫một cái gì đó tương tự, và kết quả là chúng tôi nhận được giá trị null và bây giờ chúng tôi đang chuyển null và chúng tôi cố
‫gắng chuyển null vào một phương thức thực sự yêu cầu một danh sách.
‫Vì vậy, chúng ta hãy chạy nó và chúng ta hãy xem loại lỗi nào chúng ta gặp phải lần này.
‫Vì vậy, bây giờ chúng ta nhận được một tham chiếu đối tượng ngoại lệ tham chiếu null không được đặt thành một thể hiện của danh sách đối tượng là
‫null.
‫Vì vậy, danh sách mà chúng tôi đã vượt qua bây giờ là bây giờ.
‫Vì vậy, chúng tôi nhận được lỗi này ngay cả trước khi chúng tôi có thể tạo ra một lỗi.
‫Vì vậy, những gì chúng tôi có thể làm, tất nhiên, là chúng tôi cũng có thể nắm bắt được tình huống này.
‫Vì vậy, chúng tôi có thể tiếp tục và viết một câu lệnh if khác.
‫Nếu danh sách là null, thì ném một con trỏ null.
‫Ngoại lệ ném đối số mới.
‫Ngoại lệ NULL.
‫Vì vậy, danh sách.
‫Danh sách trống.
‫Được rồi.
‫Tất nhiên, bạn có thể mô tả nhiều hơn ở đây thay vì danh sách không được để trống.
‫Vui lòng kiểm tra kết nối Internet hoặc thứ gì đó tương tự.
‫Đó có thể là kết nối Internet hoặc bất cứ nơi nào bạn lấy dữ liệu của mình.
‫Vì vậy, chúng ta hãy chạy lại nó.
‫Và bây giờ chúng ta nên ném đối số của chúng ta ra ngoại lệ.
‫Như bạn có thể thấy, danh sách này là danh sách tham số trống.
‫Hoàn hảo.
‫Được rồi.
‫Bây giờ, bạn có thể tự hỏi, tại sao chúng ta làm tất cả những điều này?
‫Tôi không muốn chương trình của mình gặp sự cố mọi lúc.
‫Chà, chúng tôi làm điều này để chương trình của chúng tôi không đi vào trạng thái mà nó thực sự sẽ thay đổi thứ gì đó trong cơ
‫sở dữ liệu.
‫Chúng tôi không thay đổi bất cứ điều gì trong cơ sở dữ liệu, trong chương trình nhỏ của chúng tôi.
‫Nhưng hãy tưởng tượng nó sẽ là trường hợp sau đó.
‫Đó là một tình huống rất khác và chúng tôi có thể tạo ra một số vấn đề nghiêm trọng ở đây.
‫Bây giờ, tôi muốn cho bạn thấy một điều cuối cùng, bởi vì trước khi chúng ta có tất cả những điều này, phải không?
‫Vì vậy, trước khi chúng ta có câu lệnh if này, điều này và điều này, v.v., và trước khi chúng ta có danh sách bạn
‫bè này.
‫Vâng, tôi thực sự có thể dừng lại.
‫Uh, trước khi chúng tôi có người bạn này ở đây, và chúng tôi đã thông qua những người bạn ở đó, và sau đó chúng tôi cố gắng có mười người bạn trong bữa
‫tiệc của mình, nhưng chúng tôi chỉ có bảy người bạn.
‫Vì vậy, trong tình huống này, một khi chúng tôi chạy điều này, chúng tôi có thể làm là chúng tôi có thể buộc lỗi này mà chúng tôi đã mắc phải và lỗi là ở người
‫bạn bên get của chúng tôi.
‫Vì vậy, chúng tôi lấy đối số này ra khỏi phạm vi chỉ số ngoại lệ nằm ngoài phạm vi.
‫Vì vậy, đó là một vấn đề mà chúng tôi đã gặp phải trước khi chúng tôi khắc phục nó.
‫Đúng.
‫Nhưng bây giờ điều thú vị mà chúng ta có thể xem xét là ngăn xếp cuộc gọi.
‫Vì vậy, có một cái gì đó được gọi là ngăn xếp cuộc gọi.
‫Và hãy để tôi làm cho nó lớn hơn một chút ở đây.
‫Thực ra, hãy để tôi đóng tất cả những thứ đó lại.
‫Vì vậy, bây giờ chúng ta hãy xem xét ngăn xếp cuộc gọi này.
‫Ngăn xếp cuộc gọi này ở đây nói rằng chúng ta hiện đang ở dòng 46.
‫Được rồi.
‫Đó là nơi chúng ta đang ở.
‫Vì vậy, chúng tôi đang ở trong phương pháp kết bạn bên nhận.
‫Bây giờ, nếu chúng ta tiến thêm một bước nữa, chúng ta có thể thấy rằng đây là nơi mà phương thức kết bạn bên được gọi.
‫Bây giờ chúng ta đang ở bên trong phương thức số nhiều get party friends.
‫Và nếu bạn muốn biết phương pháp này được gọi là gì?
‫Chà, nó được gọi ở dòng 13.
‫Vì vậy, với ngăn xếp cuộc gọi, chúng ta có thể thấy từ nơi chúng tôi được gọi, từ nơi chúng tôi được gọi lại và
‫v.v.
‫Vì vậy, chúng tôi có thể đi lên tất cả các cấp mà chúng tôi gọi phương thức ban đầu.
‫Và phương pháp ban đầu là gọi những người bạn bên cạnh.
‫Sau đó, chúng ta đi vào vòng lặp hoang dã này, sau đó bạn bè bên get được gọi, sau đó chúng ta
‫vào phương thức này ở đây và cuối cùng biến của chúng ta được tạo dựa trên một danh sách trống.
‫Được rồi, vì vậy tôi hy vọng điều này đã cung cấp cho bạn một chút giới thiệu về cách gỡ lỗi.
‫Tất nhiên, còn rất nhiều điều cần biết, nhưng tôi không muốn cung cấp cho bạn tất cả
‫các chi tiết bởi vì một số điều hữu ích, nhưng nhiều thứ trong số chúng sẽ không cần thiết trong cuộc sống hàng ngày của bạn.
‫Bởi vì, ý tôi là, nói chung, tất nhiên, bạn có thể tiếp tục gỡ lỗi và sau đó kiểm tra tất cả các cửa sổ khác
‫nhau mà bạn có thể truy cập ở đây và bạn có thể xem xét các luồng đang
‫chạy và song song các quy trình, v.v. .
‫Nhưng tôi nghĩ những gì bạn thấy bây giờ thực sự sẽ là những thứ chính hoặc sẽ là những thứ chính mà
‫bạn sẽ yêu cầu, những công cụ chính mà bạn sẽ yêu cầu để gỡ lỗi phần
‫mềm của mình.
‫Được rồi.
‫Vì vậy, tôi hy vọng bạn thích điều này và tôi hy vọng bạn có thể sử dụng nó trong các chương trình tương lai của mình.
‫Và bây giờ bạn có thể thấy cách gỡ lỗi được giải quyết.
‫Và nhân tiện, cảm ơn bạn đã đưa ra phản hồi này vì tôi nhận được phản hồi rằng phần gỡ lỗi bị
‫thiếu, vì vậy tôi quyết định tạo phần nhỏ này.
‫Vì vậy, cảm ơn rất nhiều cho các phản hồi.
‫Nếu bạn có điều gì thiếu sót trong khóa học này hoặc nếu bạn cho rằng điều gì đó rất tồi tệ, vui
‫lòng không trực tiếp đánh giá thấp cho tôi mà hãy cho tôi biết điều đó là gì để tôi có thể cải thiện khóa học vì mục tiêu của
‫tôi là để biến đây trở thành khóa học C-sharp tốt nhất trên thị trường.
‫Vì vậy, cảm ơn rất nhiều vì sự giúp đỡ của bạn và tôi hy vọng sẽ gặp lại bạn trong video tiếp theo.