Well, I haven't noticed the first line
bool IsQueryRunOK = false;
So yes, it will return false :).
But as Subrato said, it would be good to specify it in finally block.
try
{
cmd.ExecuteNonQuery();
IsQueryRunOK = true;
}
catch (System.InvalidOperationException)
{
//MessageBox.Show(ioe.Message, "Error",
// MessageBoxButtons.OK, MessageBoxIcon.Error);
throw;
}
catch (System.Exception)
{
//MessageBox.Show(e.Message, "Error",
// MessageBoxButtons.OK, MessageBoxIcon.Error);
throw;
}
finally
{
return IsQueryRunOk;
}
2009/9/14 Benj Nunez <[email protected]>
>
> So does this mean that the function *will* return false (as expected)
> even in the event of an exception?
> That confirms then that the code is correct. Thanks.
>
>
>
> Benj
>
>
>
> On Sep 14, 5:19 pm, Raghupathi Kamuni <[email protected]> wrote:
> > bool IsQueryRunOK = false;
> >
> > IsQueryRunOK is set to false by default :)
> > On Mon, Sep 14, 2009 at 12:41 PM, Processor Devil <
> [email protected]
> >
> > > wrote:
> > > Well, it depends on situation...
> > > If there is exception, the IsQueryRunOK isn't set and it will return
> null
> > > (not so good), so you should specify IsQueryRunOK as false on the end
> of
> > > exception handle :)
> >
> > > 2009/9/14 Subrato <[email protected]>
> >
> > >> You should put that return statement in finally block that would help
> you
> > >> to return no matter what the situation.
> > >> (I am answering this without actually running or debugging the code
> so
> > >> excuse me if that doesn't help)
> >
> > >> On Sep 13, 2009, at 10:25 PM, Benj Nunez <[email protected]> wrote:
> >
> > >>> Hello everyone,
> >
> > >>> This has been nagging me for quite some time now, perhaps you can
> > >>> enlighten me on this.
> > >>> You see I have a function that returns either true or false. But what
> > >>> will happen if underneath
> > >>> this function, there's a call that would raise an exception?
> >
> > >>> public bool runQueryEx(String AQueryString)
> > >>> {
> > >>> bool IsQueryRunOK = false;
> >
> > >>> using (OleDbCommand cmd = new OleDbCommand(AQueryString,
> > >>> oleconn))
> > >>> {
> > >>> cmd.CommandType = CommandType.Text;
> >
> > >>> try
> > >>> {
> > >>> cmd.ExecuteNonQuery();
> > >>> IsQueryRunOK = true;
> > >>> }
> > >>> catch (System.InvalidOperationException)
> > >>> {
> > >>> //MessageBox.Show(ioe.Message, "Error",
> > >>> // MessageBoxButtons.OK, MessageBoxIcon.Error);
> > >>> throw;
> > >>> }
> > >>> catch (System.Exception)
> > >>> {
> > >>> //MessageBox.Show(e.Message, "Error",
> > >>> // MessageBoxButtons.OK, MessageBoxIcon.Error);
> > >>> throw;
> > >>> }
> > >>> }
> >
> > >>> return IsQueryRunOK; // will it return false in case
> > >>> of exception ?
> > >>> }
> >
> > >>> When debugging, I noticed that the last line:
> >
> > >>> return IsQueryRunOK;
> >
> > >>> seems to get skipped *whenever* there's an exception. Is this normal?
> > >>> Is it implied
> > >>> that since it's a function it should return a value? Or just to be
> > >>> safe (and for peace of mind), should I use a finally block? What
> > >>> would you recommend?
> >
> > >>> Benj
>