Sye*_*hiq 6 java integer integer-overflow long-integer
我已经学会了(至少在java中)整数/长值静默地溢出,它们的值从溢出时的最小值开始而不是抛出任何异常.
我正在使用外部api进行某些文件操作,其中从文件属性加载最大文件大小.在我当地的测试环境中一切都很好.代码进入实时环境后,最大文件大小限制根本不起作用.经过两天调试/分析代码后,根本没有成功.然后由于其他原因,我采用了live constants.properties文件并用它调试了代码.O_0
我只想问,是什么阻止他们在溢出时抛出异常?
在许多情况下,Java基于C或C++,它们基于Assembly.溢出/下溢在C和C++中是静默的,在汇编时几乎是静默的(除非您检查特殊标志).这可能是因为C和C++在首次提出时没有例外.如果你想看到溢出/下溢,你只需使用更大的类型.例如long long int或long double;)BTW组件有类似于称为陷阱或中断的异常,溢出/下溢不会导致陷阱AFAIK.
我喜欢做的是使用long,double除非我确定这些类型比需要的要大得多.您不能拥有long大小溢出的设备.
| 归档时间: |
|
| 查看次数: |
870 次 |
| 最近记录: |