Qian Xu wrote:
Jarrett Billingsley wrote:

On Thu, Mar 5, 2009 at 3:17 AM, Qian Xu <quian...@stud.tu-ilmenau.de>
wrote:

this(char[] s, int flag) {
if (flag == 1)
{
this(1);
return;
}
else if (flag == 2)
{
this("hello");
return;
}
throw new Exception("unhandled case");
this(0); // fake
This line is unreachable.  The 'throw' before it makes it impossible
for it to ever execute.  Just take out this line.


Hi Jarrett,
but I need an exception here. This is an unexpected case. I want no instance
to be create in this case.

--Qian

No instance is created if you throw an exception. Or... I don't know what's the difference between that and trying to create an instance and throwing.

I'd suggest you do it like this:

module unreachable;
class Foo {
  this(int i) {}
  this(char[] s) {}
  this(char[] s, int flag)
  in
  {
    assert(flag == 1 || flag == 2);     
  }
  body
  {
    if (flag == 1)
    {
      this(1);
    }
    else if (flag == 2)
    {
      this("hello");
    }
  }
}

Reply via email to