当前位置: 首页 > 面试题库 >

常见的下溢和上溢异常

哈沛
2023-03-14
问题内容

我试图获取Java中的上溢和下溢异常,但找不到任何不错的教程。我特别想学习

  1. 它们彼此之间有何不同?
  2. 这些异常的子类是什么?
  3. 在哪种情况下会抛出它们?
  4. 其中哪些可以处理,如何处理?
  5. 与它们相关的最佳实践是什么?

任何指向有用教程的链接都可以


问题答案:

好的,OP曾经想了解堆栈溢出和算术溢出及其对应的下溢。开始....

  1. 当数字太大而无法容纳其值类型时,就会发生算术溢出。例如,a int保持值介于-2 31和2 31 -1之间(含)。如果您的电话号码超出这些限制,则会发生溢出,并且电话号码“回绕”。这些不会导致在Java中生成异常。
  2. 当浮点数变得太小以至于不能很好地与零区分开(算出的精度被截断)时,就会发生算术下溢。在Java中,这些也不引起异常。
  3. 当您调用一个函数,又调用另一个函数,然后又调用另一个函数,然后再调用另一个函数时,就会发生堆栈溢出……并且函数调用堆栈变得太深。StackOverflowError当发生这种情况时,您会得到一个提示。
  4. Java中不会发生堆栈下溢。它的运行时系统应该可以防止此类情况的发生。

为了回答OP的其他问题(请参见注释),当您超出数组的边界时,将IndexOutOfBoundsException发出an 。



 类似资料:
  • (使用Java 15.0+) 我正在用这些实现一个堆栈 如何检查堆栈是否下溢?从Overflow boolean变量中,我们知道如果一个数字不能用8位来表示,就会导致溢出。但是,如果数字不能以这种方式表示,我们如何检查呢?我还认为应该有更多的情况下堆栈溢出,像jumpz或jumpn导致通过指令的无限循环。

  • 内存溢出 内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。 内存泄漏通常情况下只能由获得程序源代码的程序员才能分析出来, 也是一个比较难以排查的问题。所有需要在开发前知道一些规范 内存溢出一直向一个 属性/变量 写数据 , 写入超过内存最大限

  • 这是关于stackoverflow的第一个问题,所以我将尽量具体地说明。我在论坛上搜索任何相关的话题,但没有运气。总之是这样的: 多亏了@whozcraig的建议,我已经设法在调用堆栈上获得了一条更有意义的消息。但还是被难倒了。 ihr.exe!_mbscmp(常量无符号字符*s1=0x00FE8C10,常量无符号字符*s2=0x00FE8C10)行84+0xF字节 ihr.exe!_mbscmp

  • 我正在连载: 和反序列化:

  • 问题内容: 当整数溢出发生而不是静默失败时,是否可能引发某种运行时异常。例如 由于溢出而打印,我想得到某种运行时异常 问题答案: 是的,从Java-8开始,您可以使用新的Exact方法,它将在溢出时引发异常(java.lang.ArithmeticException:整数溢出)。例如