我有一个简单的场景,我有一个具有以下方法的类:
public async IAsyncEnumerable<Entity> GetEntities(IQueryOptions options){
if(!validator.ValidateQuery(options)) { throw new ArgumentException(nameof(options));}
var data = dataSource.ReadEntitiesAsync(options);
await foreach (var entity in data) { yield return await converter.ConvertAsync(entity);}
}
是否可以ArgumentException
在方法调用时准确地抛出GetEntities()
,而不是在迭代的第一步之后,像这里:
await foreach(var e in GetEntities(options)) { // some code here }
我问是因为当我想返回IAsyncEnumerable
到我的 API 控制器时,异常实际上是在框架代码中引发的。我没有机会抓住它,并返回一个 HTTP 404 BAD REQUEST 代码。当然,我可以在请求管道中拦截异常,但有时我想根据它们来自的抽象层将它们包装在其他异常中。