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. Other Discussions
  3. The Weird and The Wonderful
  4. What should you do if assigning is going to crash your application?

What should you do if assigning is going to crash your application?

Scheduled Pinned Locked Moved The Weird and The Wonderful
jsonhelpquestion
17 Posts 9 Posters 0 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.
  • J Julien Villers

    I think this is incomplete. You should add this in the try block:

    if (this.Name != name_)
    throw new InvalidOperationException("Bad XML !");

    'As programmers go, I'm fairly social. Which still means I'm a borderline sociopath by normal standards.' Jeff Atwood 'I'm French! Why do you think I've got this outrrrrageous accent?' Monty Python and the Holy Grail

    L Offline
    L Offline
    Lost User
    wrote on last edited by
    #5

    And before that:

    if (this == null)
    {
    throw new NullReferenceException();
    }

    And from the clouds a mighty voice spoke:
    "Smile and be happy, for it could come worse!"

    And I smiled and was happy
    And it came worse.

    J D V 3 Replies Last reply
    0
    • L Lost User

      And before that:

      if (this == null)
      {
      throw new NullReferenceException();
      }

      And from the clouds a mighty voice spoke:
      "Smile and be happy, for it could come worse!"

      And I smiled and was happy
      And it came worse.

      J Offline
      J Offline
      Julien Villers
      wrote on last edited by
      #6

      Oh yes, silly me! I forgot to check that case :D

      'As programmers go, I'm fairly social. Which still means I'm a borderline sociopath by normal standards.' Jeff Atwood 'I'm French! Why do you think I've got this outrrrrageous accent?' Monty Python and the Holy Grail

      L 1 Reply Last reply
      0
      • J Julien Villers

        Oh yes, silly me! I forgot to check that case :D

        'As programmers go, I'm fairly social. Which still means I'm a borderline sociopath by normal standards.' Jeff Atwood 'I'm French! Why do you think I've got this outrrrrageous accent?' Monty Python and the Holy Grail

        L Offline
        L Offline
        Lost User
        wrote on last edited by
        #7

        I'm just wondering in how many ways this is useless...

        And from the clouds a mighty voice spoke:
        "Smile and be happy, for it could come worse!"

        And I smiled and was happy
        And it came worse.

        1 Reply Last reply
        0
        • L Lost User

          And before that:

          if (this == null)
          {
          throw new NullReferenceException();
          }

          And from the clouds a mighty voice spoke:
          "Smile and be happy, for it could come worse!"

          And I smiled and was happy
          And it came worse.

          D Offline
          D Offline
          dawmail333
          wrote on last edited by
          #8

          Don't forget this fella:

          Microsoft.Win32.SystemEvents.SessionEnding += (a,b) =>
          {
          MessageBox.Show("An expected error occurred.");
          }

          Don't forget to rate my post if it helped! ;) "He has no enemies, but is intensely disliked by his friends." "His mother should have thrown him away, and kept the stork." "There's nothing wrong with you that reincarnation won't cure." "He loves nature, in spite of what it did to him."

          L 1 Reply Last reply
          0
          • V Vladimir Svyatski

            Another coding horror. Have you ever thought that usual assigning operation, like a=b, can crash your application? Not yet? You gotta be ready. One of my teammates has already prepared:

            public class InspectionMethod
            {
                private string name\_;
            
                \[XmlElementAttribute()\]
                public string Name
                {
                    get
                    {
                        return name\_;
                    }
                    set
                    {
                        name\_ = value;
                    }
                }
            
                //This method is the most interesting part
                public void Resuscitate()
                {
                    try
                    {
                        name\_ = this.Name;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Serialization error has happened.",
                          MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }
            

            And indeed, never forget about message boxes. User must be warned, right?

            Y Offline
            Y Offline
            YvesDaoust
            wrote on last edited by
            #9

            Won't ((InspectionMethod*)BadPointer)->Resuscitate() raise the exception ?

            1 Reply Last reply
            0
            • D dawmail333

              Don't forget this fella:

              Microsoft.Win32.SystemEvents.SessionEnding += (a,b) =>
              {
              MessageBox.Show("An expected error occurred.");
              }

              Don't forget to rate my post if it helped! ;) "He has no enemies, but is intensely disliked by his friends." "His mother should have thrown him away, and kept the stork." "There's nothing wrong with you that reincarnation won't cure." "He loves nature, in spite of what it did to him."

              L Offline
              L Offline
              Lost User
              wrote on last edited by
              #10

              And this, at least if we have multithreaded code:

              catch(ThreadAbortException x)
              {
              throw;
              }

              For one thing,it would lessen the appearance of doing Pokemon exception handling (You must catch them all!) and it may have strange side effects to let this exception simply disappear.

              And from the clouds a mighty voice spoke:
              "Smile and be happy, for it could come worse!"

              And I smiled and was happy
              And it came worse.

              V 1 Reply Last reply
              0
              • V Vladimir Svyatski

                Another coding horror. Have you ever thought that usual assigning operation, like a=b, can crash your application? Not yet? You gotta be ready. One of my teammates has already prepared:

                public class InspectionMethod
                {
                    private string name\_;
                
                    \[XmlElementAttribute()\]
                    public string Name
                    {
                        get
                        {
                            return name\_;
                        }
                        set
                        {
                            name\_ = value;
                        }
                    }
                
                    //This method is the most interesting part
                    public void Resuscitate()
                    {
                        try
                        {
                            name\_ = this.Name;
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message, "Serialization error has happened.",
                              MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }
                }
                

                And indeed, never forget about message boxes. User must be warned, right?

                B Offline
                B Offline
                BobJanova
                wrote on last edited by
                #11

                While this is obviously dumb code, in C# and Delphi (and any other language with property support like VB.net), a 'simple assignment' is essentially calling a method so it is as possible to have crash-inducing code in there as it is anywhere else. Particularly if it's something like "myReallyComplicatedRemotingThingy.Connected = true".

                D 1 Reply Last reply
                0
                • L Lost User

                  And this, at least if we have multithreaded code:

                  catch(ThreadAbortException x)
                  {
                  throw;
                  }

                  For one thing,it would lessen the appearance of doing Pokemon exception handling (You must catch them all!) and it may have strange side effects to let this exception simply disappear.

                  And from the clouds a mighty voice spoke:
                  "Smile and be happy, for it could come worse!"

                  And I smiled and was happy
                  And it came worse.

                  V Offline
                  V Offline
                  Vladimir Svyatski
                  wrote on last edited by
                  #12

                  It's not only Pokemon exception handling, Smurf naming convention is also widely used in the application I took the snippet from. I just removed it from class name, because it leads in some way to the source of the snippet.

                  1 Reply Last reply
                  0
                  • B BobJanova

                    While this is obviously dumb code, in C# and Delphi (and any other language with property support like VB.net), a 'simple assignment' is essentially calling a method so it is as possible to have crash-inducing code in there as it is anywhere else. Particularly if it's something like "myReallyComplicatedRemotingThingy.Connected = true".

                    D Offline
                    D Offline
                    dawmail333
                    wrote on last edited by
                    #13

                    The source code for the property is included. If that causes a crash, you have bigger problems.

                    Don't forget to rate my post if it helped! ;) "He has no enemies, but is intensely disliked by his friends." "His mother should have thrown him away, and kept the stork." "There's nothing wrong with you that reincarnation won't cure." "He loves nature, in spite of what it did to him."

                    B 1 Reply Last reply
                    0
                    • D dawmail333

                      The source code for the property is included. If that causes a crash, you have bigger problems.

                      Don't forget to rate my post if it helped! ;) "He has no enemies, but is intensely disliked by his friends." "His mother should have thrown him away, and kept the stork." "There's nothing wrong with you that reincarnation won't cure." "He loves nature, in spite of what it did to him."

                      B Offline
                      B Offline
                      BobJanova
                      wrote on last edited by
                      #14

                      Yes, obviously in the posted example the developer is just an idiot. Just saying, an assignment sign doesn't automatically make a line of code crash-proof. Even a property getter (which looks totally innocuous) can break stuff, though one can argue that that is bad style in itself (Microsoft do it though, for example trying to read Length out of an unbounded stream).

                      1 Reply Last reply
                      0
                      • V Vladimir Svyatski

                        Another coding horror. Have you ever thought that usual assigning operation, like a=b, can crash your application? Not yet? You gotta be ready. One of my teammates has already prepared:

                        public class InspectionMethod
                        {
                            private string name\_;
                        
                            \[XmlElementAttribute()\]
                            public string Name
                            {
                                get
                                {
                                    return name\_;
                                }
                                set
                                {
                                    name\_ = value;
                                }
                            }
                        
                            //This method is the most interesting part
                            public void Resuscitate()
                            {
                                try
                                {
                                    name\_ = this.Name;
                                }
                                catch (Exception ex)
                                {
                                    MessageBox.Show(ex.Message, "Serialization error has happened.",
                                      MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                }
                            }
                        }
                        

                        And indeed, never forget about message boxes. User must be warned, right?

                        T Offline
                        T Offline
                        TorstenFrings
                        wrote on last edited by
                        #15

                        too sad you can't override the assignment operator in c#

                        1 Reply Last reply
                        0
                        • V Vladimir Svyatski

                          Another coding horror. Have you ever thought that usual assigning operation, like a=b, can crash your application? Not yet? You gotta be ready. One of my teammates has already prepared:

                          public class InspectionMethod
                          {
                              private string name\_;
                          
                              \[XmlElementAttribute()\]
                              public string Name
                              {
                                  get
                                  {
                                      return name\_;
                                  }
                                  set
                                  {
                                      name\_ = value;
                                  }
                              }
                          
                              //This method is the most interesting part
                              public void Resuscitate()
                              {
                                  try
                                  {
                                      name\_ = this.Name;
                                  }
                                  catch (Exception ex)
                                  {
                                      MessageBox.Show(ex.Message, "Serialization error has happened.",
                                        MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                  }
                              }
                          }
                          

                          And indeed, never forget about message boxes. User must be warned, right?

                          K Offline
                          K Offline
                          KP Lee
                          wrote on last edited by
                          #16

                          I love the error message!

                          VUnreal wrote:

                          MessageBox.Show(ex.Message, "Serialization error has happened.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                          That's assuming an error is thrown. (I've seen the computer do impossible things several times, so I wouldn't put it past it.) Serialization isn't happening here. No information about where it is happening. Oh shoot, it has ex.Message in it. at first I thought it wouldn't even tell you what was wrong. Oh, lets throw in an icon to show this is an important error message. The name of the routine is interesting. You're in a type safe environment that has an invalid type passed into the string and you are going to "fix" it by passing the invalid type back into the string. Really "advanced" thinking going on here.

                          1 Reply Last reply
                          0
                          • L Lost User

                            And before that:

                            if (this == null)
                            {
                            throw new NullReferenceException();
                            }

                            And from the clouds a mighty voice spoke:
                            "Smile and be happy, for it could come worse!"

                            And I smiled and was happy
                            And it came worse.

                            V Offline
                            V Offline
                            VallarasuS
                            wrote on last edited by
                            #17

                            CDP1802 wrote:

                            if (this == null) { throw new NullReferenceException(); }

                            You don't know how hard we laughed when we found such one in code library.

                            Regards Vallarasu S | BreakingDotNet.blogspot.com

                            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