| View previous topic :: View next topic |
| Author |
Message |
Guest
|
Posted: Wed Dec 20, 2006 10:10 am Post subject: Question about catch |
|
|
int main()
{
try {
b();
} catch(...) {
return 1;
} catch(int i) {
return 2;
}
what ll happen to this code?
does it always generate syntax error because of the catch(...) phase?
or is it complier specific?
Thanks! |
|
| Back to top |
|
 |
Andre Kostur Guest
|
Posted: Wed Dec 20, 2006 10:10 am Post subject: Re: Question about catch |
|
|
cwc5w (AT) hotmail (DOT) com wrote in news:1166606607.464543.229260
@t46g2000cwa.googlegroups.com:
| Quote: | int main()
{
try {
b();
} catch(...) {
return 1;
} catch(int i) {
return 2;
}
what ll happen to this code?
does it always generate syntax error because of the catch(...) phase?
or is it complier specific?
|
The Standard (s15.3.6) says that the catch(...) "shall be the last handler
for its try block". (Oh, and I'm assuming that you have one more '}' to
close the main() block) |
|
| Back to top |
|
 |
Ian Collins Guest
|
Posted: Wed Dec 20, 2006 10:10 am Post subject: Re: Question about catch |
|
|
cwc5w (AT) hotmail (DOT) com wrote:
| Quote: | int main()
{
try {
b();
} catch(...) {
return 1;
} catch(int i) {
return 2;
}
missing } |
| Quote: | does it always generate syntax error because of the catch(...) phase?
or is it complier specific?
catch(...) must be last, it doesn't make sense any other way. |
--
Ian Collins. |
|
| Back to top |
|
 |
Guest
|
Posted: Wed Dec 20, 2006 10:10 am Post subject: Re: Question about catch |
|
|
thanks for the quick reply!
yes, typo on the "}" |
|
| Back to top |
|
 |
Anant Guest
|
Posted: Wed Dec 20, 2006 10:10 am Post subject: Re: Question about catch |
|
|
I think, it will not be compiler dependent.
Because at run time, we check all the catch blocks sequentially, and as
soon as we find datatype of exception and catch block are same , we
just ignore rest others.
And once catch(...) is found it means you will never check for other
catch blocks. So all compiler will be forcing to write catch(...) in
the last only.
cwc5w (AT) hotmail (DOT) com wrote:
| Quote: | int main()
{
try {
b();
} catch(...) {
return 1;
} catch(int i) {
return 2;
}
what ll happen to this code?
does it always generate syntax error because of the catch(...) phase?
or is it complier specific?
Thanks! |
|
|
| Back to top |
|
 |
|