mirror of
https://github.com/github/codeql.git
synced 2025-12-19 18:33:16 +01:00
136 lines
1.6 KiB
Java
136 lines
1.6 KiB
Java
package successors;
|
|
|
|
import java.io.IOException;
|
|
import java.security.InvalidParameterException;
|
|
|
|
public class TestThrow {
|
|
private TestThrow() throws IOException
|
|
{
|
|
}
|
|
|
|
private void thrower() throws InvalidParameterException
|
|
{
|
|
}
|
|
|
|
public void f() throws Exception
|
|
{
|
|
int z = 0;
|
|
try
|
|
{
|
|
throw new RuntimeException();
|
|
} catch (RuntimeException e)
|
|
{
|
|
z = 1;
|
|
} catch (Exception e)
|
|
{
|
|
z = 2;
|
|
}
|
|
|
|
z = -1;
|
|
|
|
try
|
|
{
|
|
if (z == 1)
|
|
{
|
|
throw new RuntimeException();
|
|
} else if (z == 2)
|
|
{
|
|
throw new Exception();
|
|
} else if (z == 3)
|
|
{
|
|
new TestThrow();
|
|
} else
|
|
{
|
|
thrower();
|
|
}
|
|
} catch (RuntimeException e)
|
|
{
|
|
z = 1;
|
|
} finally
|
|
{
|
|
z = 2;
|
|
}
|
|
|
|
z = -1;
|
|
|
|
try
|
|
{
|
|
if (z == 1)
|
|
{
|
|
throw new Exception();
|
|
}
|
|
else if (z == 2)
|
|
{
|
|
new TestThrow();
|
|
} else
|
|
{
|
|
thrower();
|
|
}
|
|
} catch (RuntimeException e)
|
|
{
|
|
z = 1;
|
|
}
|
|
|
|
z = -1;
|
|
|
|
try
|
|
{
|
|
if (z == 1)
|
|
throw new Exception();
|
|
} finally
|
|
{
|
|
z = 1;
|
|
}
|
|
|
|
try
|
|
{
|
|
try
|
|
{
|
|
if (z == 1)
|
|
{
|
|
throw new Exception();
|
|
} else if (z == 2)
|
|
{
|
|
throw new RuntimeException();
|
|
} else
|
|
{
|
|
throw new IOException("Foo bar", null);
|
|
}
|
|
} catch (RuntimeException e)
|
|
{
|
|
z = 1;
|
|
}
|
|
try
|
|
{
|
|
z = -2;
|
|
} finally
|
|
{
|
|
if (z == 1)
|
|
{
|
|
throw new Exception();
|
|
} else if (z == 2)
|
|
{
|
|
throw new RuntimeException();
|
|
} else if (z == 3)
|
|
{
|
|
throw new IOException("Foo bar", null);
|
|
}
|
|
}
|
|
} catch (IOException e)
|
|
{
|
|
z = 2;
|
|
}
|
|
finally
|
|
{
|
|
z = 3;
|
|
}
|
|
|
|
if (z == 1)
|
|
{
|
|
throw new Exception();
|
|
}
|
|
|
|
z = -1;
|
|
}
|
|
}
|