There are many ways of detecting hardware errors with your storage media including SMART status from a device. This page specifically focuses on using a tool to check a device for bad blocks.
OS X specifies the disks within /dev as two different kinds. The first kind (example : /dev/disk1) is a buffered device. The problem with working with a buffered device is in some situations it may be slower, than having direct access to the device. This brings us to the second kind of disk device in OS X a raw disk (example : /dev/rdisk1). Accessing the raw disk will be faster for some operations. In particular when using badblock you will tend to see an improvement by using the raw device rather than the buffered device.
Installing badblocks via HomeBrew :
$ brew install e2fsprogs
Example of usage :
$ cd /usr/local/Cellar/e2fsprogs/1.42.13/sbin
$ sudo ./badblocks -sv /dev/rdisk5
Remember it is always best to have a backup than needing to resort to this kind of tools or approaches for data recovery.