Hola!,
El manejo del string de conexión depende de cómo estes realizando el acceso a datos. Pero lo ideal es que lo leas desde el archivo de configuración de la aplicación. Sí es una aplicación web será desde el archivo web.config y sí es desktop será el app.config.
Ahora, desde tu capa de datos tendrías que utilizar la clase Configuration Manager que está en el namespace System.Configuration, vas a necesitar agregar una referencia al ensamblado System.Configuration.
Con la instrucción ConfigurationManager.ConnectionsStrings["nombre"] vas a poder leer el mismo (siempre y cuando resida en el archivo de configuración).
Te dejo un link para que veas un poco mejor el tema de las capas:
Programación en Capas
Con respecto a las excepciones solo utilizá el throw si vas a generar tus excepciones personalizadas y posteriormente lanzarlas.
Por defecto, desde la capa de presentación las podés capturar a todas. Siempre y cuando se manejen dentro del mismo hilo de ejecución.
En este link te muestra como podés manejar las excepciones de forma global desde la capa de presentación:
C# Excepciones