For the complete documentation index, see llms.txt. This page is also available as Markdown.

操作异常

OperationException 操作异常。

OperationException 是框架级操作异常。它通过 Reason 表达失败类型,并提供一组静态工厂方法。

工厂方法
语义

Argument

参数不正确。

Unknown

未知错误。

Unfound

目标不存在。

Unsatisfied

条件不满足。

Unprocessed

操作未处理。

Unsupported

不支持该操作。

来源:framework/Zongsoft.Core/test/Messaging/MessageQueueBaseTest.cs(节选;上下文见源文件)。

MessageQueueBaseTest.cs
public async Task UnsupportedDelayFailsBeforeDriverOperation()
{
	using var queue = new TestQueue();
	var options = new MessageEnqueueOptions(TimeSpan.FromSeconds(1));

	var exception = await Assert.ThrowsAsync<OperationException>(() => queue.ProduceAsync("tests/delay", ReadOnlyMemory<byte>.Empty, options).AsTask());

	Assert.Equal(nameof(OperationException.Unsupported), exception.Reason);
	Assert.Contains(MessageQueueFeature.Delay.Name, exception.Message);
	Assert.Equal(0, queue.ProduceCount);
}

实际用例

上面是框架消息抽象的能力测试:不支持延迟的队列拒绝带延迟选项的发送请求。测试检查 Reason 为 Unsupported,同时确认驱动尚未执行。TestQueue 属于测试夹具,不连接实际中间件。Discussions 没有这个队列实现,相关业务异常应以其服务为准。

边界与错误响应

Reason 是供程序判断的分类,Message 面向诊断或用户说明;不要通过匹配错误文本决定业务分支。工厂只创建异常,不会自动抛出、重试或转换 HTTP 状态。网关如何转成响应见聚合异常处理。

调用方可以通过 IsArgument、IsUnknown、IsUnfound、IsUnsupported 等属性判断异常原因。

相关资源

最后更新于