In this paper we study a variant of the shortest path problem in graphs: given a weighted graph $G$ and vertices $s$ and $t$, and given a set $X$ of forbidden paths in $G$, find a shortest $s$-$t$ path $P$ such that no path in $X$ is a subpath of $P$. Path $P$ is allowed to repeat vertices and edges. We call each path in $X$ an \emph{exception}, and our desired path a \emph{shortest exception avoiding path}. We formulate a new version of the problem where the algorithm has no a priori knowledge of $X$, and finds out about an exception $x \in X$ only when a path containing $x$ fails. This situation arises in computing shortest paths in optical networks. We give an algorithm that finds a shortest exception avoiding path in time polynomial in $|G|$ and $|X|$. The main idea is to run Dijkstra's algorithm incrementally after replicating vertices when an exception is discovered.