Index: continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadata.java
===================================================================
--- continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadata.java	(revision 430657)
+++ continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadata.java	(working copy)
@@ -23,8 +23,10 @@
 import org.apache.maven.continuum.project.builder.manager.ContinuumProjectBuilderManagerException;
 import org.codehaus.plexus.formica.util.MungedHttpsURL;
 
+import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.net.UnknownHostException;
 import java.util.Map;
 
 /**
@@ -43,7 +45,7 @@
     public static final String KEY_PROJECT_BUILDING_RESULT = "projectBuildingResult";
 
     public void execute( Map context )
-        throws ContinuumException, ContinuumProjectBuilderManagerException, ContinuumProjectBuilderException
+        throws ContinuumException, ContinuumProjectBuilderManagerException, ContinuumProjectBuilderException, IOException
     {
         String projectBuilderId = getString( context, KEY_PROJECT_BUILDER_ID );
 
@@ -55,37 +57,29 @@
 
         ContinuumProjectBuildingResult result;
 
-        try
+        if ( !u.startsWith( "http" ) )
         {
-            if ( !u.startsWith( "http" ) )
+            url = new URL( u );
+
+            result = projectBuilder.buildProjectsFromMetadata( url, null, null );
+        }
+        else
+        {
+            MungedHttpsURL mungedURL = new MungedHttpsURL( u );
+
+            if ( mungedURL.isValid() )
             {
-                url = new URL( u );
+                url = mungedURL.getURL();
 
-                result = projectBuilder.buildProjectsFromMetadata( url, null, null );
+                result = projectBuilder.buildProjectsFromMetadata( url, mungedURL.getUsername(), mungedURL
+                    .getPassword() );
             }
             else
             {
-                MungedHttpsURL mungedURL = new MungedHttpsURL( u );
-
-                if ( mungedURL.isValid() )
-                {
-                    url = mungedURL.getURL();
-
-                    result = projectBuilder.buildProjectsFromMetadata( url, mungedURL.getUsername(), mungedURL
-                        .getPassword() );
-                }
-                else
-                {
-                    throw new ContinuumException( "'" + u + "' is not a valid secureURL." );
-                }
+            	throw new UnknownHostException( "'" + u + "' is not a valid secureURL." );
             }
-
         }
-        catch ( MalformedURLException e )
-        {
-            throw new ContinuumException( "'" + u + "' is not a valid URL.", e );
-        }
-
+        
         context.put( KEY_PROJECT_BUILDING_RESULT, result );
     }
 }
Index: continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java
===================================================================
--- continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java	(revision 430657)
+++ continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java	(working copy)
@@ -72,7 +72,7 @@
     // ----------------------------------------------------------------------
 
     public ContinuumProjectBuildingResult buildProjectsFromMetadata( URL url, String username, String password )
-        throws ContinuumProjectBuilderException
+        throws ContinuumProjectBuilderException, IOException
     {
         // ----------------------------------------------------------------------
         // We need to roll the project data into a file so that we can use it
@@ -91,6 +91,7 @@
 
     private void readModules( URL url, ContinuumProjectBuildingResult result, boolean groupPom, String username,
                               String password )
+    	throws ContinuumProjectBuilderException, IOException
     {
         MavenProject mavenProject;
 
@@ -100,17 +101,9 @@
         }
         catch ( MavenBuilderHelperException e )
         {
-            result.addWarning( e.getMessage() );
-
-            return;
+        	throw new ContinuumProjectBuilderException( e.getMessage(), e );
         }
-        catch ( IOException e )
-        {
-            result.addWarning( "Could not download " + url + ": " + e.getMessage() );
 
-            return;
-        }
-
         if ( groupPom )
         {
             ProjectGroup projectGroup = buildProjectGroup( mavenProject, result );
Index: continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
===================================================================
--- continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java	(revision 430657)
+++ continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java	(working copy)
@@ -334,7 +334,7 @@
     }
 
     public void checkoutProject( int projectId )
-        throws ContinuumException
+        throws ContinuumException, Exception
     {
         Map context = new HashMap();
 
@@ -701,7 +701,7 @@
     // ----------------------------------------------------------------------
 
     public ContinuumProjectBuildingResult addMavenOneProject( String metadataUrl )
-        throws ContinuumException
+        throws ContinuumException, Exception
     {
         return executeAddProjectsFromMetadataActivity( metadataUrl, MavenOneContinuumProjectBuilder.ID );
     }
@@ -711,7 +711,7 @@
     // ----------------------------------------------------------------------
 
     public ContinuumProjectBuildingResult addMavenTwoProject( String metadataUrl )
-        throws ContinuumException
+        throws ContinuumException, Exception
     {
         return executeAddProjectsFromMetadataActivity( metadataUrl, MavenTwoContinuumProjectBuilder.ID );
     }
@@ -721,7 +721,7 @@
     // ----------------------------------------------------------------------
 
     public int addProject( Project project, String executorId )
-        throws ContinuumException
+        throws ContinuumException, Exception
     {
         project.setExecutorId( executorId );
 
@@ -759,7 +759,7 @@
     // ----------------------------------------------------------------------
 
     private int executeAddProjectFromScmActivity( Project project )
-        throws ContinuumException
+        throws ContinuumException, Exception
     {
         Map context = new HashMap();
 
@@ -791,7 +791,7 @@
 
     private ContinuumProjectBuildingResult executeAddProjectsFromMetadataActivity( String metadataUrl,
                                                                                    String projectBuilderId )
-        throws ContinuumException
+        throws ContinuumException, Exception
     {
         Map context = new HashMap();
 
@@ -2087,7 +2087,7 @@
     // ----------------------------------------------------------------------
 
     private void executeAction( String actionName, Map context )
-        throws ContinuumException
+        throws ContinuumException, Exception
     {
         try
         {
@@ -2099,10 +2099,6 @@
         {
             throw new ContinuumException( "Error while executing the action '" + actionName + "'.", e );
         }
-        catch ( Exception e )
-        {
-            throw new ContinuumException( "Error while executing the action '" + actionName + "'.", e );
-        }
     }
 
     // ----------------------------------------------------------------------
Index: continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
===================================================================
--- continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java	(revision 430657)
+++ continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java	(working copy)
@@ -29,6 +29,7 @@
 import org.codehaus.plexus.util.dag.CycleDetectedException;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -59,7 +60,7 @@
         throws ContinuumException;
 
     void checkoutProject( int projectId )
-        throws ContinuumException;
+        throws ContinuumException, Exception;
 
     Project getProject( int projectId )
         throws ContinuumException;
@@ -142,13 +143,13 @@
     // ----------------------------------------------------------------------
 
     int addProject( Project project, String executorId )
-        throws ContinuumException;
+        throws ContinuumException, Exception;
 
     ContinuumProjectBuildingResult addMavenTwoProject( String metadataUrl )
-        throws ContinuumException;
+        throws ContinuumException, Exception;
 
     ContinuumProjectBuildingResult addMavenOneProject( String metadataUrl )
-        throws ContinuumException;
+        throws ContinuumException, Exception;
 
     void updateProject( Project project )
         throws ContinuumException;
Index: continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuilder.java
===================================================================
--- continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuilder.java	(revision 430657)
+++ continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuilder.java	(working copy)
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import java.io.IOException;
 import java.net.URL;
 
 /**
@@ -27,5 +28,5 @@
     String ROLE = ContinuumProjectBuilder.class.getName();
 
     ContinuumProjectBuildingResult buildProjectsFromMetadata( URL url, String username, String password )
-        throws ContinuumProjectBuilderException;
+        throws ContinuumProjectBuilderException, IOException;
 }
Index: continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenOneProjectAction.java
===================================================================
--- continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenOneProjectAction.java	(revision 430657)
+++ continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenOneProjectAction.java	(working copy)
@@ -43,6 +43,7 @@
     private String m1Pom = null;
 
     public String execute()
+    	throws Exception
     {
         if ( !StringUtils.isEmpty( m1PomUrl ) )
         {
Index: continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddProjectAction.java
===================================================================
--- continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddProjectAction.java	(revision 430657)
+++ continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddProjectAction.java	(working copy)
@@ -46,6 +46,7 @@
     private String projectType;
 
     public String execute()
+    	throws Exception
     {
         Project project = new Project();
 
Index: continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenTwoProjectAction.java
===================================================================
--- continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenTwoProjectAction.java	(revision 430657)
+++ continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenTwoProjectAction.java	(working copy)
@@ -16,12 +16,15 @@
  * limitations under the License.
  */
 
-import org.apache.maven.continuum.ContinuumException;
+import org.apache.maven.continuum.Continuum;
+import org.apache.maven.continuum.project.builder.ContinuumProjectBuilderException;
 import org.apache.maven.continuum.project.builder.ContinuumProjectBuildingResult;
 import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.net.MalformedURLException;
+import java.net.UnknownHostException;
 
 /**
  * @author Nick Gonzalez
@@ -42,6 +45,7 @@
     private String m2Pom = null;
 
     public String execute()
+    	throws Exception
     {
         if ( !StringUtils.isEmpty( m2PomUrl ) )
         {
@@ -72,10 +76,30 @@
         {
             result = continuum.addMavenTwoProject( m2Pom );
         }
-        catch ( ContinuumException e )
+        catch ( UnknownHostException uhe )
         {
-            return INPUT;
+        	addActionError(getText("add.m2.project.unknown.host.error"));
+            
+        	return INPUT;
         }
+        catch ( MalformedURLException mue )
+        {
+        	addActionError(getText("add.m2.project.unknown.malformed.url.error"));
+            
+        	return INPUT;
+        }
+        catch ( FileNotFoundException fnfe )
+        {
+        	addActionError(getText("add.m2.project.m2PomFile.error"));
+            
+        	return INPUT;
+        }
+        catch ( ContinuumProjectBuilderException cpbe )
+        {
+        	addActionError(getText("add.m2.project.unknown.resource.error"));
+            
+        	return INPUT;
+        }
 
         if ( result.getWarnings().size() > 0 )
         {
Index: continuum-webapp/src/main/resources/localization/Continuum.properties
===================================================================
--- continuum-webapp/src/main/resources/localization/Continuum.properties	(revision 430657)
+++ continuum-webapp/src/main/resources/localization/Continuum.properties	(working copy)
@@ -121,7 +121,10 @@
 add.m2.project.m2PomUrl.error = You must enter a valid URL
 add.m2.project.m2PomFile.label = Upload POM
 add.m2.project.m2PomFile.message =  Enter the local filename of the Maven 2 POM to upload (works only for a single project without modules).
-add.m2.project.m2PomFile.error = You must enter a valid URL
+add.m2.project.m2PomFile.error = You must enter a valid URL. The specified file does not exist.
+add.m2.project.unknown.host.error = You must enter a valid URL. The specified host is either unknown or inaccessible.
+add.m2.project.unknown.malformed.url.error = You must enter a valid URL. The format of the specified URL is not supported.
+add.m2.project.unknown.resource.error = You must enter a valid URL. The specified resource cannot be downloaded.
 
 # ----------------------------------------------------------------------
 # Page: AddProject (ant or shell)
Index: continuum-webapp/src/main/resources/webwork.properties
===================================================================
--- continuum-webapp/src/main/resources/webwork.properties	(revision 430657)
+++ continuum-webapp/src/main/resources/webwork.properties	(working copy)
@@ -13,3 +13,4 @@
 #webwork.multipart.saveDir =
 # default max size is 2097152 (2MB)
 #webwork.multipart.maxSize = 
+webwork.custom.i18n.resources=localization.Continuum

