How are exceptions implemented?

I know there are a few smart C++ experts here so I’ll ask ahead.

How are exceptions implemented by the compiler? When an exception is thrown, it traverses up the call stack to the code that first catches it. Does the compiler write in stack return codes? How is that possible for a function that doesn’t show any sign of receiving an exception from calling another function?