C++核心准则:优先使用编译时检查而不是运行时检查 谁践踏了优雅 2022-11-12 10:54 137阅读 0赞 # 原因 # 代码的清晰度和性能: * 你无需为在编译时捕获的错误编写错误处理程序==》代码结构清晰、简洁 * **编译时检查**不会占用执行时间==》性能更好 # 例子 # // Int is an alias used for integers int bits = 0; // don't: avoidable code for(Int i = 0; i ; i <<= 1){ ++bits; } if(bits < 32){ cerr << "Int too small"; } 这个例子无法达成它想要达成的目标(因为溢出时的行为是无定义的),应该使用`static_assert`代替 * 代码目的:通过一个循环的左移操作计算Int的位数,如果小于32为就报错。这是一种运行时检查方式 * `static_assert`支持编译时的断言错误 // Int is an alias used for integers static_assert(sizeof(Int) >= 4); // do: compile-time check 更好的做法是只使用类型系统并替换`Int`为`int32_t` # 例子: # void read(int* p, int n); // 将最大n个整数读入*p int a[100]; read(a, 1000); // bad, off the end better: void read(span<int> r); // 读入整数r的范围 int a[100]; read(a); // better: 让编译器计算出元素的数量 注: * 使用指针传递数据的read可以使用int型的大小信息进行范围检查,但是这种检查只能在执行时进行 * span包含了数组的尺寸信息,如果数组长度在编译时就可以确定,span就可以实现编译时范围检查。 通过指针传递数据之后,大小信息也作为变量传递,因此之后的范围检查都只能在执行时进行。有了模板类span之后,这些检查都可以重新考虑,看看是否能够变成编译时检查 # 建议 # * 注意指针类型参数 * 注意运行时对范围违反的检查 也就是说:**编译时能做的,就不要延迟到运行时** [参考][Link 1] [Link 1]: https://blog.csdn.net/craftsman1970/article/details/103243498
相关 Java泛型在编译时类型检查失败 在Java中,泛型是用于创建可重用代码的强大工具。然而,如果在编译时类型检查失败,通常是因为以下几种情况: 1. 泛型参数不匹配:当你使用泛型方法或者类,并传递了不兼容的类型 红太狼/ 2024年09月12日 05:42/ 0 赞/ 20 阅读
相关 运行时异常,检查异常,Error *一、The Checked Exception(检查异常)** 常见的检查异常有: **1. SQLException** 提供有关数据库访问错误或其他错误的... ╰半橙微兮°/ 2024年04月17日 05:58/ 0 赞/ 40 阅读
相关 检查异常与运行时异常(非检查异常)的区别 检查异常与运行时异常(非检查异常)的区别 -------------------- 1. 检查异常和非检查异常的类 检查异常是Exception的本身或者 谁借莪1个温暖的怀抱¢/ 2023年10月17日 21:19/ 0 赞/ 107 阅读
相关 C++核心准则:优先使用编译时检查而不是运行时检查 原因 代码的清晰度和性能: 你无需为在编译时捕获的错误编写错误处理程序==》代码结构清晰、简洁 编译时检查不会占用执行时间==》性能更好 例子 谁践踏了优雅/ 2022年11月12日 10:54/ 0 赞/ 138 阅读
相关 C++核心准则:编译时无法检查的内容应在运行时检查 原因 在程序中留下难以检测的错误会导致崩溃等不良结果 注意 理想情况下,我们会在编译时或执行时捕捉错误(不包括程序执行逻辑的错误)。 但是,我们不可能在编译器捕 谁践踏了优雅/ 2022年11月12日 09:57/ 0 赞/ 159 阅读
相关 java常见检查异常和非检查异常_Java检查异常、非检查异常、运行时异常、非运行时异常的区别... Java把所有的非正常情况分为两种:异常(Exception)和错误(Error),它们都继承Throwable父类。 Java的异常(Exception和Error)分为检 梦里梦外;/ 2022年11月03日 01:00/ 0 赞/ 196 阅读
相关 Java检查异常和非检查异常,运行时异常和非运行时异常的区别 通常,Java的异常(包括Exception和Error)分为 检查异常(checked exceptions)和非检查的异常(unchecked exceptions 旧城等待,/ 2022年05月20日 08:17/ 0 赞/ 246 阅读
相关 Dubbo启动时检查 启动时检查 Dubbo缺省,会在启动时 检查依赖的服务是否可用 不可用时会抛出异常,阻止 Spring 初始化完成 以便上线时,能及早发现问题,默认 check 忘是亡心i/ 2022年05月14日 11:07/ 0 赞/ 179 阅读
相关 java 运行时异常和检查异常 ![Center][] Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。它有两个子类:Error和Exceptio 骑猪看日落/ 2021年05月12日 11:54/ 0 赞/ 513 阅读
还没有评论,来说两句吧...