diff --git a/lib/src/command/add.dart b/lib/src/command/add.dart
index aabd67f..fd3934d 100644
--- a/lib/src/command/add.dart
+++ b/lib/src/command/add.dart
@@ -169,7 +169,7 @@
       /// TODO(walnut): Change the error message once pub upgrade --bump is
       /// released
       if (devDependencyNames.contains(package.name)) {
-        usageException('"${package.name}" is already in "dev_dependencies". '
+        dataError('"${package.name}" is already in "dev_dependencies". '
             'Use "pub upgrade ${package.name}" to upgrade to a later version!');
       }
 
@@ -178,7 +178,7 @@
       /// remove the package from dependencies, since it might cause the user's
       /// code to break.
       if (dependencyNames.contains(package.name)) {
-        usageException('"${package.name}" is already in "dependencies". '
+        dataError('"${package.name}" is already in "dependencies". '
             'Use "pub remove ${package.name}" to remove it before adding it '
             'to "dev_dependencies"');
       }
@@ -188,7 +188,7 @@
       /// TODO(walnut): Change the error message once pub upgrade --bump is
       /// released
       if (dependencyNames.contains(package.name)) {
-        usageException('"${package.name}" is already in "dependencies". '
+        dataError('"${package.name}" is already in "dependencies". '
             'Use "pub upgrade ${package.name}" to upgrade to a later version!');
       }
 
diff --git a/test/add/common/add_test.dart b/test/add/common/add_test.dart
index 737dfa6..3b9f3af 100644
--- a/test/add/common/add_test.dart
+++ b/test/add/common/add_test.dart
@@ -98,10 +98,10 @@
 
         await pubAdd(
             args: ['foo'],
-            exitCode: exit_codes.USAGE,
+            exitCode: exit_codes.DATA,
             error:
                 contains('"foo" is already in "dependencies". Use "pub upgrade '
-                    'foo" to upgrade to a later\nversion!'));
+                    'foo" to upgrade to a later version!'));
 
         await d.appDir({'foo': '1.2.2'}).validate();
       });
@@ -116,10 +116,10 @@
 
         await pubAdd(
             args: ['foo:1.2.3'],
-            exitCode: exit_codes.USAGE,
+            exitCode: exit_codes.DATA,
             error:
                 contains('"foo" is already in "dependencies". Use "pub upgrade '
-                    'foo" to upgrade to a later\nversion!'));
+                    'foo" to upgrade to a later version!'));
 
         await d.appDir({'foo': '1.2.2'}).validate();
       });
@@ -134,10 +134,10 @@
 
         await pubAdd(
             args: ['foo:>=1.2.2'],
-            exitCode: exit_codes.USAGE,
+            exitCode: exit_codes.DATA,
             error:
                 contains('"foo" is already in "dependencies". Use "pub upgrade '
-                    'foo" to upgrade to a later\nversion!'));
+                    'foo" to upgrade to a later version!'));
 
         await d.appDir({'foo': '1.2.2'}).validate();
       });
@@ -435,10 +435,10 @@
 
         await pubAdd(
             args: ['foo', '--dev'],
-            exitCode: exit_codes.USAGE,
+            exitCode: exit_codes.DATA,
             error: contains(
                 '"foo" is already in "dev_dependencies". Use "pub upgrade '
-                'foo" to upgrade to a\nlater version!'));
+                'foo" to upgrade to a later version!'));
 
         await d.dir(appPath, [
           d.pubspec({
@@ -463,10 +463,10 @@
 
         await pubAdd(
             args: ['foo:1.2.3', '--dev'],
-            exitCode: exit_codes.USAGE,
+            exitCode: exit_codes.DATA,
             error: contains(
                 '"foo" is already in "dev_dependencies". Use "pub upgrade '
-                'foo" to upgrade to a\nlater version!'));
+                'foo" to upgrade to a later version!'));
 
         await d.dir(appPath, [
           d.pubspec({
@@ -491,10 +491,10 @@
 
         await pubAdd(
             args: ['foo:>=1.2.2', '--dev'],
-            exitCode: exit_codes.USAGE,
+            exitCode: exit_codes.DATA,
             error: contains(
                 '"foo" is already in "dev_dependencies". Use "pub upgrade '
-                'foo" to upgrade to a\nlater version!'));
+                'foo" to upgrade to a later version!'));
 
         await d.dir(appPath, [
           d.pubspec({
@@ -725,9 +725,9 @@
       await pubAdd(
           args: ['foo:1.2.3', '--dev'],
           error: contains('"foo" is already in "dependencies". Use '
-              '"pub remove foo" to remove it before\nadding it to '
+              '"pub remove foo" to remove it before adding it to '
               '"dev_dependencies"'),
-          exitCode: exit_codes.USAGE);
+          exitCode: exit_codes.DATA);
 
       await d.dir(appPath, [
         d.pubspec({
