d的异常2
原文
添加环境信息
到可能无法访问
传播异常的抛代码
中.
是的,但可再次这样:抓一个,然后抛新的,并把旧的放在后面.
是的.但是,必须在每个可能想要添加环境信息
的潜在抽象级别
周围插入try/catch
语法很痛苦.如果在战略入口点
,用可插入的包装器
,就更好了.如下?
// 幻想的,假设的语法
auto myFunc(Args...)(Args args) {
int additionalInfo = 123;
scope(failure, additionalInfo);
return runUnreliableOperation(args);
}
域共享析构器
,可以这样:
struct AdditionalInfo {
static string[] info;
this(string info) {
AdditionalInfo.info ~= info;
}
~this() {
AdditionalInfo.info = AdditionalInfo.info[0 .. $ - 1];
}
@disable this(this);
}
class AdditionalInfoException : Exception {
this(string t) {
import std.string;
super(t ~ "\n" ~ AdditionalInfo.info.join(" "));
}
}
void bar() {
with(AdditionalInfo("zone 1")) {
with(AdditionalInfo("zone 2")) {
}
throw new AdditionalInfoException("info");
}
}
void main() {
bar();
}
抛出点
需要与之合作,但仍然可以试/抓
整个操作,并附加原始异常
到新异常中.最大的问题仍然是串类型
,呃.
通过编译器,可在异常处理
的元数据
中附加函数级别
信息,因此就像生成栈跟踪
一样查找
它.但仅限于函数级.但是,有嵌套
函数.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现