【发布时间】:2011-05-01 21:17:26
【问题描述】:
我有一个带有 API 的类,它允许我请求对象,直到它抛出 IndexOutOfBoundsException。
我想将它包装到一个迭代器中,以便能够编写更清晰的代码。但是,我需要捕获异常以停止迭代:
static IEnumerable<object> Iterator( ExAPI api ) {
try {
for( int i = 0; true; ++i ) {
yield return api[i]; // will throw eventually
}
}
catch( IndexOutOfBoundsException ) {
// expected: end of iteration.
}
}
但是……
与表达式一起使用时,yield return 语句不能出现在 catch 块或 try 块中 一个或多个 catch 子句。更多 信息,请参阅异常处理 语句(C# 参考)。语句(C# 参考)。 (来自msdn)
我该如何包装这个 api?
【问题讨论】:
标签: c# .net exception yield-return