Checking if a tree is balanced
Refer here for the definition of a balanced binary tree. If you don't like having two return values, you can always refactor and write a separate height() function to get the height of a tree. This would allow you to implement it without having to return two values and would improve the readability of your code as well. This is the suggested way to do it.

I would say avoid raising exceptions unless you're certain you know you want to. You should never raise an exception if you don't have to.