diff --git a/metar/Metar.py b/metar/Metar.py
index b682d2c..766c485 100755
--- a/metar/Metar.py
+++ b/metar/Metar.py
@@ -324,13 +324,11 @@ class Metar(object):
         provided, then the month and year are guessed from the current date.
       utcdelta : int or datetime.timedelta, optional
         An int of hours or a timedelta object used to specify the timezone.
-      strict : bool (default is True) or str {'raise', 'warn', 'log'}
-        When unparsed or unparseable groups exist in a METAR code, a
-        ``ParserError`` will be raised. Setting this to False will suppress that
-        behavior and will use the standard library's logging module to record
-        all supressed errors. One can then detect if decoding is complete by
-        checking the :attr:`decode_completed` attribute.
-
+      strict : bool (default is True)
+        This option determines if a ``ParserError`` is raised when
+        unparsable groups are found or an unexpected exception is encountered.
+        Setting this to `False` will prevent exceptions from being raised and
+        only generate warning messages.
       """
 
       self.code = metarcode              # original METAR code
@@ -439,9 +437,13 @@ class Metar(object):
 
       except Exception as err:
           message = (
-              "%s failed while processing '%s'\n\t%s" % (handler.__name__, code, "\n\t".join(err.args))
+              ("%s failed while processing '%s'\n\t%s"
+               ) % (handler.__name__, code, "\n\t".join(err.args))
           )
-          raise ParserError(message)
+          if strict:
+              raise ParserError(message)
+          else:
+              warnings.warn(message, RuntimeWarning)
 
       if self._unparsed_groups:
           code = ' '.join(self._unparsed_groups)

diff --git a/test/test_metar.py b/test/test_metar.py
index d358061..269cf02 100644
--- a/test/test_metar.py
+++ b/test/test_metar.py
@@ -267,6 +267,13 @@ class MetarTest(unittest.TestCase):
     self.assertEqual( report("MMMMMGMMKT").wind(), "missing" )
     self.assertEqual( report("MMMMMG01KT").wind(), "missing" )
 
+  def test_issue51_strict(self):
+    """Check that setting strict=False prevents a ParserError"""
+    with warnings.catch_warnings(record=True) as w:
+        report = Metar.Metar(sta_time+"90010KT", strict=False)
+    assert len(w) == 1
+    assert report.wind_speed is None
+
   def test_142_parseWind_illegal(self):
     """Check rejection of illegal wind groups."""
     self.raisesParserError( sta_time+"90010KT" )

Allow `ParserErrors` to not raise
If you're like me and get most of your METAR codes from FAA's ASOS program, you get a *lot* of parser errors.

The `MetarParser` subclass in [cloudside](https://github.com/Geosyntec/cloudside/blob/master/cloudside/station.py#L149) gets around this by simply logging the error and moving on. 

It'd be nice to have this as an *option* upstream.
test/test_metar.py::MetarTest::test_issue51_strict
test/test_metar.py::MetarTest::test_010_parseType_default test/test_metar.py::MetarTest::test_011_parseType_legal test/test_metar.py::MetarTest::test_020_parseStation_legal test/test_metar.py::MetarTest::test_021_parseStation_illegal test/test_metar.py::MetarTest::test_030_parseTime_legal test/test_metar.py::MetarTest::test_031_parseTime_specify_year test/test_metar.py::MetarTest::test_032_parseTime_specify_month test/test_metar.py::MetarTest::test_033_parseTime_auto_month test/test_metar.py::MetarTest::test_034_parseTime_auto_year test/test_metar.py::MetarTest::test_035_parseTime_suppress_auto_month test/test_metar.py::MetarTest::test_040_parseModifier_default test/test_metar.py::MetarTest::test_041_parseModifier test/test_metar.py::MetarTest::test_042_parseModifier_nonstd test/test_metar.py::MetarTest::test_043_parseModifier_illegal test/test_metar.py::MetarTest::test_140_parseWind test/test_metar.py::MetarTest::test_141_parseWind_nonstd test/test_metar.py::MetarTest::test_142_parseWind_illegal test/test_metar.py::MetarTest::test_150_parseVisibility test/test_metar.py::MetarTest::test_151_parseVisibility_direction test/test_metar.py::MetarTest::test_152_parseVisibility_with_following_temperature test/test_metar.py::MetarTest::test_290_ranway_state test/test_metar.py::MetarTest::test_300_parseTrend test/test_metar.py::MetarTest::test_310_parse_sky_conditions test/test_metar.py::MetarTest::test_issue40_runwayunits test/test_metar.py::MetarTest::test_not_strict_mode test/test_metar.py::MetarTest::test_snowdepth