Linked by Thom Holwerda on Fri 3rd Feb 2012 23:43 UTC
PDAs, Cellphones, Wireless There's an article making the rounds right now about how applications on iOS crash more often than applications on Android. I'm not going to detail the entire methodology - the article itself does so - but it does raise an interesting talking point about how both mobile operating systems handle application crashes and updates.
Thread beginning with comment 505865
To view parent comment, click here.
To read all comments associated with this story, please click here.
Elv13
Member since:
2006-06-12

Java is not native so when it segfault, it just throw and exception and go on. While it may corrupt the application state to the point it still explode shortly after, it is not because of the fault itself, but the consequences of it. C++ application wont survive calling a method from an invalid pointer, array overflow and division per 0. It will close instantaneously.

That said, Java do suck and I code in C/C++/Lua when I can.

Reply Parent Score: 2

MORB Member since:
2005-07-06

I don't think a buggy java application doing the things you mention will survive it any better than C++.

I doubt many java developers setup exception handlers to recover gracefully (or at all) from a division by 0, an out of bound array access or trying to dereference a null pointer.

Reply Parent Score: 2

Elv13 Member since:
2006-06-12

The thing is, a simple try {} catch(e){printstack} autogenerated by Eclipse will usually (and often accidentally) catch them and allow the application to go on. As long as you use regular exception instead of specific one, the application will stay open without any additional/intentional work.

Reply Parent Score: 1

BeamishBoy Member since:
2010-10-27

C++ application wont survive... division per 0. It will close instantaneously.


Handling a division-by-zero error in C++ is trivial. Subclass std::runtime_error and handle it like you would any other exception.

Reply Parent Score: 1

MORB Member since:
2005-07-06

Handling a division-by-zero error in C++ is trivial. Subclass std::runtime_error and handle it like you would any other exception.

Only if you're using visual C++ and their silly structured exception handling, which is pretty bad for various reasons, including performances. Throwing an exception on a division by zero is non standard behavior.

Also, a division by 0 won't necessarily cause the program to halt. If you work with floats it will usually just yield a special type of NaN value indicating an infinite.

The best way to deal with divisions by 0 is to special case the situations where they can happen, or assert if it is never supposed to happen.
If you don't explicitly deal with the division by 0 cases it can result in either a crash (that includes uncaught exceptions) or bugged behavior, in absolutely any language.

Edited 2012-02-05 14:49 UTC

Reply Parent Score: 2