Typically you speak of syntax errors and logic errors. For the most part logic errors are the worst, but there is a special case of syntax errors that can really wreak havoc on one's day.
These types of syntax errors have a certain "smell" to them, and almost always have the trait of compiling just fine, but producing what at first appears to be an almost nonsensical error. With 20/20 hindsight they are perfect error descriptions, but that is after the pain and suffering is over.
Take the following for example:
Unhandled Exception.
System.StackOverflowException: Exception of type System.StackOverflowException was thrown.
At first look it appeared to be caused by the following:
DialogResult dialogResult = reelSelectForm.ShowDialog();
Obviously nonsense, after checking through some inherited base forms I tracked it to the following:
private int m_truckId = 0;
public int TruckId
{
get{ return this.TruckId; }
set{ this.m_truckId = value; }
}
Of course, I could have used a little more caffine [read brains] that day, but still it looks like a good opportunity for a compiler warning. It's hard to imagine anyone intentionally wanting this infinite loop variant. For over ten minutes I was thinking things like: maybe my motherboard is going bad; I must need some new memory.