Overflow Exceptions

WWWTC #18 highlights the fact that integer overflow detection is ON by default for Visual Basic projects. To change the behavior, you need to go to into the project properties -> Compile -> Advanced Compile Options and click the "Remove Integer Overflow Checks".

In C# projects, overflow detection is OFF by default. To change the behavior, you need to go into the project properties -> Build -> Advanced and select the "Check for arithmetic overflow/underflow" check box.

Changing the C# project settings is one solution to making the unit test in WWWTC #18 pass.

There is another option, too. Use the checked keyword in C#, as Johnathan, Jason, Ronin, and Dave pointed out.

public int AddQuantity(int additionalQuantity)
{
    
// .. some logic

    return checked(_quantity += additionalQuantity);
}

Or …

public int AddQuantity(int additionalQuantity)
{
    
// .. some logic

    checked
    {
        
return _quantity += additionalQuantity;
    }
}

There are a number of other subtleties to overflow detection – try some experiments with floating point and decimal data types to see what I mean, or jump to this article on the The Code Project: Arithmetic Overflow Checking using checked / unchecked.

posted on Wednesday, October 10, 2007 9:12 PM by scott

Comments

Thursday, October 11, 2007 7:25 PM by Christopher Steen

# Link Listing - October 11, 2007

Link Listing - October 11, 2007
Thursday, October 11, 2007 7:28 PM by Christopher Steen

# Link Listing - October 11, 2007

Regional SharePoint Users Conference October 27-28 [Via: Gary Blatt ] SOAP/TCP Transport for WCF [Via:...