1
8
如果函数返回
如果您在内部处理此函数的异常而不重新运行,为什么不
编辑:根据下面@Mark的注释,简单地移动return语句就隐藏了一个错误,这个错误在请求操作的上下文中是致命的,并且使库在这个过程中相当不可靠。最好传播异常,如果这是处理就地乘法错误的方法(这似乎是一种合理的方法)。 |
2
4
解决问题的方法是:
|
3
4
基本上我知道你的接线员长得像:
现在的问题是,当抛出(并捕获)异常时,返回哪个值? 结果是,您不返回任何内容,那么编译器应该怎么做呢? 你需要决定在捕获路径上做什么:
但对于赋值运算符,我强烈建议您不要抛出任何异常,这与盲目地应用
编辑 :
解决问题的一个简单方法是先检查,
这是在异常区域开发的一种通用方法:先做可能抛出的事情,然后就不必担心异常会到处出现。
另外,作为评论,
你不敢扔坏球
! 不能盲目地选择现有的异常并使用它作为自己的便利:异常类型
携带意义
和
|
4
0
警告是指函数中有一个不具有返回语句的非异常控制路径。 你的瞄准镜有类似的回报吗?如果它不该回来,你可能会想再拍一次。 |
5
0
我不知道您的大设计,但作为一般规则,重载运算符根本不应该有运行时故障(例如“=”、“*”,等等,不应该抛出异常)。 这是因为用户希望它们的行为像数字的+和-等。 想想用户会怎么称呼它。看起来你希望他们有这样的便利:
现在,如果您真的需要支持在运行时设置其大小的矩阵,您将有可能失败的加法、减法和乘法操作。我个人不会让实际操作人员超载 ,+,-, =,等等,因为您只能在异常情况下发出错误信号。 想想看。您要求用户在每次调用矩阵运算符时都具有这样的安全性:
现在,有没有可能有人会把你的每一个电话都包在一个试听器里?即使他们这样做了,也不会比使用普通成员函数(如:
如果返回false并且在维度不匹配时不执行乘法,则会得到与以前相同的行为。现在打电话的人只需要:
这是更好的,因为这永远不会造成崩溃,如果他们忘记检查回报。从公共API可以明显看出,用户需要检查错误,操作要么完全成功,要么完全失败。诚然,它仍然不漂亮,如果用户没有“if()”逻辑,就不会得到他期望的结果,但至少他已经收到警告。据我所知,如果在编译时必须支持行和列未知的矩阵,那么这是最好的选择。 |
lfox · 如果列中不存在某个值,则停止代码执行 2 年前 |
zaen · 将值传递到异常字符串消息中 2 年前 |
Zephyr · 如何在双ListView选择系统上实现过滤器? 6 年前 |
Aave · 错误数组长度的特定异常 6 年前 |