diff --git a/aftltool.py b/aftltool.py
index e20428d..936fe98 100755
--- a/aftltool.py
+++ b/aftltool.py
@@ -1661,20 +1661,22 @@
       The TransparencyLogConfig instance.
 
     Raises:
-      AftlError: If the format of arg is invalid.
+      argparse.ArgumentTypeError: If the format of arg is invalid.
     """
     api_key = None
     try:
       target, pub_key, *rest = arg.split(",", maxsplit=2)
-    except ValueError as e:
-      raise AftlError("Incorrect format for transparency log config: "
-                      "{}.".format(e))
+    except ValueError:
+      raise argparse.ArgumentTypeError("incorrect format for transparency log "
+                                       "server, expected "
+                                       "host:port,publickey_file.")
     if not target:
-      raise AftlError("Incorrect format for transparency log config: "
-                      "host:port cannot be empty.")
+      raise argparse.ArgumentTypeError("incorrect format for transparency log "
+                                       "server: host:port cannot be empty.")
     if not pub_key:
-      raise AftlError("Incorrect format for transparency log config: "
-                      "publickey_file cannot be empty.")
+      raise argparse.ArgumentTypeError("incorrect format for transparency log "
+                                       "server: publickey_file cannot be "
+                                       "empty.")
     if rest:
       api_key = rest[0]
     return TransparencyLogConfig(target, pub_key, api_key)
@@ -1871,7 +1873,7 @@
       print('aftltool: error: too few arguments')
       sys.exit(2)
     except AftlError as e:
-      # Signals to calling tools that an unhandled exeception occured.
+      # Signals to calling tools that an unhandled exception occured.
       sys.stderr.write('Unhandled AftlError occured: {}\n'.format(e))
       sys.exit(2)
 
diff --git a/aftltool_test.py b/aftltool_test.py
index 33ed5c3..b568dee 100755
--- a/aftltool_test.py
+++ b/aftltool_test.py
@@ -24,6 +24,7 @@
 #
 """Unit tests for aftltool."""
 
+import argparse
 import base64
 import binascii
 import io
@@ -1541,10 +1542,10 @@
     self.assertEqual(log.target, "example.com:8080")
     self.assertEqual(log.pub_key, "mykey.pub")
 
-    with self.assertRaises(aftltool.AftlError):
+    with self.assertRaises(argparse.ArgumentTypeError):
       aftltool.TransparencyLogConfig.from_argument("example.com:8080,")
 
-    with self.assertRaises(aftltool.AftlError):
+    with self.assertRaises(argparse.ArgumentTypeError):
       aftltool.TransparencyLogConfig.from_argument(",")
 
   def test_from_argument_with_api_key(self):
