try-catch should not be used for flow control: 1) Avoid using for expected program flows, 2) Should handle exceptional cases only, 3) Not a replacement for proper conditionals, 4) Performance impact when used unnecessarily, 5) Makes code harder to understand, 6) Better alternatives exist for normal flow control, 7) Should represent truly exceptional conditions, 8) Reserved for error handling scenarios.