Có cách nào để tạo một trình vòng lặp được tạo ra tiếp tục đến mục tiếp theo khi một ngoại lệ xảy ra bên trong một trong các khối lặp không?Có cách nào để tạo ra một Iterator tạo lợi nhuận Tiếp tục đến mục tiếp theo khi có Ngoại lệ?
này hiện không làm việc:
Boolean result;
while (true)
{
try
{
result = enumerator.MoveNext(); //Taken from a yield created enumerable
if (!result) break;
}
catch (Exception ex)
{
Console.WriteLine("CATCHED...");
continue;
}
}
Không hẳn, một ngoại lệ ném bởi các điều tra viên sẽ đặt nó trong "liệt kê hoàn thành" tiểu bang. –
Vì vậy, không có cách nào để làm cho nó tiến một bước? Nên có. – aattia
@aattia, phương pháp MoveNext là cách để tiến một bước. Các mã khác ngăn chặn điều này xảy ra bằng cách ném một ngoại lệ. Một điều tra viên ném một ngoại lệ về cơ bản bị phá vỡ vì nó không thể sử dụng bởi 99% sử dụng IEnumerable. Có rất ít giá trị trong việc thêm một phương thức cho biết "nếu trình vòng lặp đã bị hỏng, vui lòng thực hiện bước". – JaredPar