The most common type of journaling, called metadata journaling, only protects the integrity of the file system, not of data. This includes
ext4 in the default
If a non-journaling file system suffers a crash, it will be checked using
fsck on the next boot.
fsck scans every inode on the file system, looking for blocks that are marked as used but are not reachable (i.e. have no file name), and marks those blocks as unused. Doing this takes a long time.
With a metadata journaling file system, instead of doing an
fsck, it knows which blocks it was in the middle of changing, so it can mark them as free without searching the whole partition for them.
There is a less common type of journaling, called data journaling, which is what
ext3 does if you mount it with the
It attempts to protect all your data by writing not just a list of logical operations, but also the entire contents of each write to the journal. But because it's writing your data twice, it can be much slower.
As others have pointed out, even this is not a guarantee, because the hard drive might have told the operating system it had stored the data, when it fact it was still in the hard drive's cache.
For more information, take a look at the Wikipedia Journaling File System article and the Data Mode section of the ext4 documentation.