Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. Design and Architecture
  4. Using Exceptions and Ensuring Invariants

Using Exceptions and Ensuring Invariants

Scheduled Pinned Locked Moved Design and Architecture
questiondiscussionannouncement
1 Posts 1 Posters 4 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    Leslie Sanford
    wrote on last edited by
    #1

    I think it's important that if a method throws an exception, the object from which the exception is thrown is left in a consistent state, that is its invariants are left intact. This can be challenging, though. Consider a method that sets a value:

    public void SetValue(int value)
    {
    // Range checking omitted...

    this.value = value;
    
    // Do some operation based on the new value that could 
    // possibly throw an exception.
    
    // If an exception is thrown, we need to revert 'value'
    // back to its previous value.
    

    }

    My current approach to this is to postpone updating an object's values until an operation has completed successfully. This means possibly caching temp values as you perform a series of operations, each of which may throw an exception. Once everything has completed, we can update the object's values. So instead of the above with the assignment to 'value' taking place at the beginning method, we move it down to the bottom. Thoughts?

    1 Reply Last reply
    0
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • World
    • Users
    • Groups