Para eso existen los try...except....
Siempre se asume que no va a pasar nada al intentar conectarse pero se encierra entre try...except para enseñarle a tu programa que hacer en caso de...
Código Delphi
[-]
try
ZQuery.Open;
except
If Not ZQuery.Connection.Connected Then
ZQuery.Connection.Connect;
end;
En mi ejemplo utilizo Zeos para las conexiones y obviamente tendría que revisar el código de error para ver si se trata de una desconexión y no de un error en el query.
Otra solución es ponerle una opción a tu programa para reconectar de manera que no tengas que cerrar y volver a entrar y finalmente...un servidor (cualquiera que este sea, base de datos, web, ftp, etc) debe por definición contar con mecanismos que impidan su apagado espontáneo: fuentes ininterrumpidas, no breaks, no usar windows (es broma) y no ser usados como PCs de uso corriente.
Un buen servidor bien montado debe poder correr por meses sin necesitar apagarse y sin apagarse o fallar por ninguna circunstancia.