Jérôme M. Berger Wrote: > Leandro Lucarella wrote: > > Ali Ãehreli, el 7 de junio a las 14:41 me escribiste: > >> Leandro Lucarella wrote: > >> > >>> Go doesn't have exceptions, so scope(failure/success) makes no sense. > >>> You can argue about if not having exceptions is good or bad (I don't > >>> have a strong opinion about it, sometimes I feel exceptions are nice, > >>> sometimes I think they are evil), though. > >> Just to compare the two styles... > >> > >> Without exceptions, every step of the code must be checked explicitly: > >> > >> // C code: > >> int foo() > >> { > >> int err = 0; > >> > >> // allocate resources > >> > >> err = bar(); > >> if (err) goto finally; > >> > >> err = zar(); > >> if (err) goto finally; > >> > >> err = car(); > >> if (err) goto finally; > >> > >> finally: > >> // do cleanup > >> > >> return err; > >> } > >> > >> (Ordinarily, the if(err) checks are hidden inside macros like > >> check_error, check_error_null, etc.) > >> > >> With exceptions, the actual code emerges: > >> > >> // C++ or D code > >> void foo() > >> { > >> // allocate resources > >> > >> bar(); > >> zar(); > >> car(); > >> } > > > > You are right, but when I see the former code, I know exactly was it > > going on, and when I see the later code I don't have a clue how errors > > are handled, or if they are handled at all. And try adding the try/catch > > statements, the code is even more verbose than the code without > > exceptions. > > > > Is a trade-off. When you don't handle the errors, exceptions might be > > a win, but when you do handle them, I'm not so sure. And again, I'm not > > saying I particularly like one more than the other, I don't have a > > strong opinion =) > > > Of course, the problem is that you rarely see the former code. Most > of the time, people just write the second one with or without > exceptions and don't bother about error checking if there are no > exceptions. You are a lot more likely to get them to handle errors > properly with exceptions than without (particularly with D's scope > statements). > > Jerome > -- > mailto:jeber...@free.fr > http://jeberger.free.fr > Jabber: jeber...@jabber.fr >
Being lazy as I am, exceptions are faster and easier to use than manual error checking. There will always be some unchecked return value, with exceptions it can't happen. In a way same as GC vs manual memory handling. Each thread of program I make I always enclose in try catch, so everything is cought. >