Hola amigo...
en tu funcion de guardado maneja try-catch asi cachas el error y lo controlas evitando que mande un error feote y te saque del sistema
Ejemplo:
Código:
Try
//aqui pones todo el codigo de guardado asi como lo estas haciendo ahorita...
Catch ex As Exception
//aqui es donde controlaras el error que te marque al guardar...!
MsgBox("Error recibido:"&vbCrLf & ex.Message)
End Try
bueno espero y te haya servido
saludos