We currently have the following compound if statement...
if ((billingRemoteService == null)
|| billingRemoteService.getServiceHeader() == null
|| !\"
essentially if/else vs try catch are not same things. Performance/cost of these things are irrelevant for your code. Once you design and implement your business rules correctly then you can worry about performance.
try/catch is for exception handling for exceptional states of the program. while if else is for conditional states of the program.
They have their own uses. See what you need and code accordingly.
Moreover, you are breaking law of demeter. it would be better if you go over design and code for making it simpler to read as well as make it a better design for maintainability and extensibility.