检测算术溢出(或下溢)并获取溢出计数的最合适方法是什么?
为了更容易理解,我将使用byte
,但这对于int
任何其他基本整数类型都是相同的。现在想象一下我的值是 240 并且想给它加上 24。显然是算术溢出。使用checked
关键字这至少很容易检测到......
byte value = 240;
try
{
checked
{
value += 24;
}
}
catch (OverflowException e)
{
// handle overflow, get overflow count via % etc.
}
...通过抛出异常。
这就是我目前正在使用的。
但是,我不太喜欢这个中的异常处理。异常通常非常昂贵,我想从一开始就避免它们。对我来说,这似乎是一个Boneheaded-Exception无论如何。我可以做一些算术魔法来预先检测到这个吗?