Sair de rotina por 'goto' e não por 'return' pode?

Olá, pessoal.
A dúvida é a seguinte: chamo (call) uma rotina de, por ex, aquisição de dados (teclas, usart, etc) e nela eu trato a ocorrencia de algum possível erro (timeout, dados corrompidos, etc). Que problema pode causar uma saida incondicional, do tipo "goto", dessa rotina caso ocorra esse erro. Pode haver, em algum momento, problemas na pilha do PIC? A estrutura seria mais ou menos assim:
;------------------------------------------------------
leitura
le_entrada
erro ?
. sim -> goto main (deu erro, não devolve nada e volta pro 'main' - essa é a dúvida)
salva entrada -> dado_temp
return
;------------------------------------------------------
grava_dados
call leitura
recupera & grava dado_temp -> dado
trata_dado
.....
return
;------------------------------------------------------
main
.....
call grava_dados
.....
call qquer_coisa
.....
goto main
;------------------------------------------------------
Obrigado.
A dúvida é a seguinte: chamo (call) uma rotina de, por ex, aquisição de dados (teclas, usart, etc) e nela eu trato a ocorrencia de algum possível erro (timeout, dados corrompidos, etc). Que problema pode causar uma saida incondicional, do tipo "goto", dessa rotina caso ocorra esse erro. Pode haver, em algum momento, problemas na pilha do PIC? A estrutura seria mais ou menos assim:
;------------------------------------------------------
leitura
le_entrada
erro ?
. sim -> goto main (deu erro, não devolve nada e volta pro 'main' - essa é a dúvida)
salva entrada -> dado_temp
return
;------------------------------------------------------
grava_dados
call leitura
recupera & grava dado_temp -> dado
trata_dado
.....
return
;------------------------------------------------------
main
.....
call grava_dados
.....
call qquer_coisa
.....
goto main
;------------------------------------------------------
Obrigado.