Dựa trên câu trả lời của Matt. Đó là một tổng số overkill thực sự.
Tôi đề xuất thực hiện một việc như thế này và đảm bảo rằng bài kiểm tra đã trôi qua. MSTest không phải là thư viện tốt nhất để thử nghiệm, nhưng nó là "Standard" :)
[TestClass()]
public class FinalClauseTester
{
private TestContext testContextInstance;
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
[TestMethod]
[DeploymentItem(@"Something right goes here.")]
[DataSource("Something else goes here", "row", somethingOtherSetupCrap)]
public void TestFinalClause()
{
string[] allStrings = {"1", "2", "3", "4", "5"};
int yesCount = 0;
foreach(string s in allStrings)
{
try
{
//Error happens here
throw new Exception();
}
catch(Exception ex)
{
//Handle exception
if (yesCount == 3)
{
break;
}
}
finally
{
//Clean up code
yesCount++;
}
}
// And, at the end of this loop ...
Debug.Assert(yesCount = 3); // Or something like this.
}
}
Nguồn
2010-11-11 00:02:34
"Bạn đã thử chưa?" – Alex
Tôi đã chạy thử nghiệm, tôi đã hẹn giờ phải mất bao lâu để tạo câu hỏi này và tôi đã hẹn giờ phải mất bao lâu để đặt ứng dụng đó trong ứng dụng bảng điều khiển và nhấp vào "Chạy". Bàn điều khiển đã thắng. Được rồi tôi đã không thực sự chạy một thử nghiệm nhưng bạn nhận được điểm. :) – RPM1984
[* cough *] (http://stackoverflow.com/questions/4150186/breaking-out-of-a-for-loop-from-a-catch-block/4150190#4150190) –