diff --git a/django/template/loader.py b/django/template/loader.py
--- a/django/template/loader.py
+++ b/django/template/loader.py
@@ -179,6 +179,8 @@
 
 def select_template(template_name_list):
     "Given a list of template names, returns the first that can be loaded."
+    if template_name_list is not None and not template_name_list:
+        raise TemplateDoesNotExist("empty list of candidates") 
     not_found = []
     for template_name in template_name_list:
         try:
diff --git a/tests/regressiontests/templates/loaders.py b/tests/regressiontests/templates/loaders.py
--- a/tests/regressiontests/templates/loaders.py
+++ b/tests/regressiontests/templates/loaders.py
@@ -143,5 +143,16 @@
         self.assertEqual(output, 'obj:after')
         self.assertEqual(context['obj'], 'before')
 
+    def test_empty_list(self):
+        self.assertRaisesRegexp(TemplateDoesNotExist,
+                                'empty list of candidates$',
+                                loader.render_to_string, [])
+
+
+    def test_select_templates_from_empty_list(self): 
+        self.assertRaisesRegexp(TemplateDoesNotExist,
+                                'empty list of candidates$',
+                                loader.select_template, [])
+
 if __name__ == "__main__":
     unittest.main()
