Eles não são a mesma coisa.
Um bug é um comportamento não intencional de um software: o software não faz o que deveria. Os bugs podem viver em todos os níveis de desenvolvimento de software, desde erros antigos simples até erros lógicos até especificações funcionais inadequadas.
Uma exceção , por outro lado, pode se referir a uma condição incomum de um programa, divergindo da operação normal, ou, mais especificamente, à construção de linguagem usada para sinalizar e manipular tais condições.
O fato de ocorrer uma exceção pode ser um sinal de um bug, mas geralmente não é. Por exemplo, um aplicativo que deve baixar um documento de uma URL e processá-lo localmente pode gerar uma exceção quando o servidor remoto estiver inoperante: o aplicativo está se afastando da operação normal (não pode baixar e processar o documento), mas se lida com a exceção corretamente e se recupera, então não há erro.
Por outro lado, a presença de um bug não se manifesta necessariamente como uma exceção. Um aplicativo pode descartar silenciosamente os dados inseridos, em vez de armazená-los em seu banco de dados; nenhuma exceção é lançada, mas ainda é um bug.