using System;
namespace Test
{
public class HttpException : Exception
{
public HttpException(int status)
{
StatusCode = status;
}
public int StatusCode { get; set; }
}
class Program
{
static void TestCatch(int status)
{
try
{
throw new HttpException(status);
}
catch (HttpException ex) when (ex.StatusCode == 404)
{
Console.WriteLine("Not Found!");
}
catch (HttpException ex) when (ex.StatusCode >= 500 && ex.StatusCode < 600)
{
Console.WriteLine("Server Error");
}
catch (HttpException ex)
{
Console.WriteLine("HTTP Error {0}", ex.StatusCode);
}
}
static void Main(string[] args)
{
TestCatch(404);
TestCatch(501);
TestCatch(101);
}
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIFRlc3QKewogICAgcHVibGljIGNsYXNzIEh0dHBFeGNlcHRpb24gOiBFeGNlcHRpb24KICAgIHsKICAgICAgICBwdWJsaWMgSHR0cEV4Y2VwdGlvbihpbnQgc3RhdHVzKQogICAgICAgIHsKICAgICAgICAgICAgU3RhdHVzQ29kZSA9IHN0YXR1czsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBpbnQgU3RhdHVzQ29kZSB7IGdldDsgc2V0OyB9CiAgICB9CgogICAgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHN0YXRpYyB2b2lkIFRlc3RDYXRjaChpbnQgc3RhdHVzKQogICAgICAgIHsKICAgICAgICAgICAgdHJ5CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXhjZXB0aW9uKHN0YXR1cyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2ggKEh0dHBFeGNlcHRpb24gZXgpIHdoZW4gKGV4LlN0YXR1c0NvZGUgPT0gNDA0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiTm90IEZvdW5kISIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoIChIdHRwRXhjZXB0aW9uIGV4KSB3aGVuIChleC5TdGF0dXNDb2RlID49IDUwMCAmJiBleC5TdGF0dXNDb2RlIDwgNjAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiU2VydmVyIEVycm9yIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2ggKEh0dHBFeGNlcHRpb24gZXgpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJIVFRQIEVycm9yIHswfSIsIGV4LlN0YXR1c0NvZGUpOwogICAgICAgICAgICB9IAogICAgICAgIH0KICAgICAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICBUZXN0Q2F0Y2goNDA0KTsKICAgICAgICAgICAgVGVzdENhdGNoKDUwMSk7CiAgICAgICAgICAgIFRlc3RDYXRjaCgxMDEpOwogICAgICAgIH0KICAgIH0KfQo=