This is an exception that you will quite often see if you work with AJAX or JavaScript-heavy websites where the DOM is continuously being manipulated.
You are probably used to seeing code like this:
WebElement googleSearchBar = driver.findElement(By.name("q"));
The WebElement object that you have created is actually a reference to a specific element in the DOM; think of it as a phone number that you call to talk to that element:
When the DOM is manipulated and the old element is destroyed, that reference no longer links to an element in the DOM and it becomes stale. Using our phone number analogy, this is where the phone line is disconnected. You can keep calling that number, but it will not ring anymore; you'll just get a message telling you that the phone number is not valid:
This can get very confusing when the element we have...