Exception handling incurs an overhead cost (as I understand).... and I appreciate IF statements/branching can cause slower code. However, assuming your program runs correctly for 99.9% of the time, the branch predictor would guess correctly most of the time and you wouldnt need exception handling overhead throughout the program...
Therefore, in performance-critical applications is it better to use IF statements rather than traditional exception handling for detecting errors?