I do not think that exceptions are useful. I cannot see why they are superior to asserts or logs.
I also think that they cause the generated assembly to be much larger and more difficult to read due the unclear branching and extra inserted calls. Here are some examples that I feel demonstrates this.