#include <iostream>
using namespace std;
int foo(int index)
{
switch(index)
{
case 1: return 3;
case 2: throw string("text");
case 3: throw bool(true);
}
throw logic_error("ololo");
}
void example(int index)
{
try
{
const int result = foo(index);
std::cout << "returned int: '" << result <<"'\n";
}
catch(const string& answer)
{
std::cout << "returned string: '" << answer <<"'\n";
}
catch(bool b)
{
std::cout << "returned bool: "
<< (b? "true" : "false")<<std::endl;
}
}
int main() {
example(1);
example(2);
example(3);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmludCBmb28oaW50IGluZGV4KQp7Cglzd2l0Y2goaW5kZXgpCgl7CgljYXNlIDE6IHJldHVybiAzOwoJY2FzZSAyOiB0aHJvdyBzdHJpbmcoInRleHQiKTsKCWNhc2UgMzogdGhyb3cgYm9vbCh0cnVlKTsgCgl9Cgl0aHJvdyBsb2dpY19lcnJvcigib2xvbG8iKTsKfQoKdm9pZCBleGFtcGxlKGludCBpbmRleCkKewoJdHJ5Cgl7CgkJY29uc3QgaW50IHJlc3VsdCA9IGZvbyhpbmRleCk7CgkJc3RkOjpjb3V0IDw8ICJyZXR1cm5lZCBpbnQ6ICciIDw8IHJlc3VsdCA8PCInXG4iOwoJfQoJY2F0Y2goY29uc3Qgc3RyaW5nJiBhbnN3ZXIpCgl7CgkJc3RkOjpjb3V0IDw8ICJyZXR1cm5lZCBzdHJpbmc6ICciIDw8IGFuc3dlciA8PCInXG4iOwoJfQoJY2F0Y2goYm9vbCBiKQoJewoJCXN0ZDo6Y291dCA8PCAicmV0dXJuZWQgYm9vbDogIiAKCQkJPDwgKGI/ICJ0cnVlIiA6ICJmYWxzZSIpPDxzdGQ6OmVuZGw7Cgl9Cn0KCmludCBtYWluKCkgewoJCglleGFtcGxlKDEpOwoJZXhhbXBsZSgyKTsKCWV4YW1wbGUoMyk7CgkKCXJldHVybiAwOwp9Cg==