From 8e50ffb27248d0bb078b2d2fddfa4ce667a9d39d Mon Sep 17 00:00:00 2001 From: Michael Schurter Date: Wed, 13 Jan 2010 04:20:33 +0800 Subject: [PATCH] Added base exception class to all MongoDB exceptions --- pymongo/errors.py | 22 ++++++++++++---------- test/test_errors.py | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 test/test_errors.py diff --git a/pymongo/errors.py b/pymongo/errors.py index 9bcf2e38a..c475a0eb3 100644 --- a/pymongo/errors.py +++ b/pymongo/errors.py @@ -14,8 +14,10 @@ """Exceptions raised by the Mongo driver.""" +class BaseMongoDBException(Exception): + """Common base class for all MongoDB exceptions""" -class ConnectionFailure(IOError): +class ConnectionFailure(BaseMongoDBException, IOError): """Raised when a connection to the database cannot be made or is lost. """ @@ -32,12 +34,12 @@ class AutoReconnect(ConnectionFailure): """ -class ConfigurationError(Exception): +class ConfigurationError(BaseMongoDBException): """Raised when something is incorrectly configured. """ -class OperationFailure(Exception): +class OperationFailure(BaseMongoDBException): """Raised when a database operation fails. """ @@ -49,36 +51,36 @@ class DuplicateKeyError(OperationFailure): """ -class InvalidOperation(Exception): +class InvalidOperation(BaseMongoDBException): """Raised when a client attempts to perform an invalid operation. """ -class CollectionInvalid(Exception): +class CollectionInvalid(BaseMongoDBException): """Raised when collection validation fails. """ -class InvalidName(ValueError): +class InvalidName(BaseMongoDBException, ValueError): """Raised when an invalid name is used. """ -class InvalidBSON(ValueError): +class InvalidBSON(BaseMongoDBException, ValueError): """Raised when trying to create a BSON object from invalid data. """ -class InvalidStringData(ValueError): +class InvalidStringData(BaseMongoDBException, ValueError): """Raised when trying to encode a string containing non-UTF8 data. """ -class InvalidDocument(ValueError): +class InvalidDocument(BaseMongoDBException, ValueError): """Raised when trying to create a BSON object from an invalid document. """ -class InvalidId(ValueError): +class InvalidId(BaseMongoDBException, ValueError): """Raised when trying to create an ObjectId from invalid data. """ diff --git a/test/test_errors.py b/test/test_errors.py new file mode 100644 index 000000000..338889f7b --- /dev/null +++ b/test/test_errors.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +"""Test the errors module.""" + +import unittest + +import pymongo +from pymongo.errors import BaseMongoDBException + + +class TestErrors(unittest.TestCase): + def test_base_exception(self): + self.assertRaises(BaseMongoDBException, pymongo.Connection, port=0) + +if __name__ == '__main__': + unittest.main()