diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index d8c8d2d8..5f6427c6 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,6 +1,14 @@
 Changelog
 ---------
 
+2.20.1 (unreleased)
+*******************
+
+Bug fixes:
+
+- Fix bug that raised ``TypeError`` when invalid data type is
+  passed to a nested schema with ``@validates`` (:issue:`1342`).
+
 2.20.0 (2019-08-10)
 *******************
 
diff --git a/src/marshmallow/schema.py b/src/marshmallow/schema.py
index 085c509b..826d2749 100644
--- a/src/marshmallow/schema.py
+++ b/src/marshmallow/schema.py
@@ -877,7 +877,7 @@ class BaseSchema(base.SchemaABC):
                 for idx, item in enumerate(data):
                     try:
                         value = item[field_obj.attribute or field_name]
-                    except KeyError:
+                    except (KeyError, TypeError):
                         pass
                     else:
                         validated_value = unmarshal.call_and_store(
@@ -892,7 +892,7 @@ class BaseSchema(base.SchemaABC):
             else:
                 try:
                     value = data[field_obj.attribute or field_name]
-                except KeyError:
+                except (KeyError, TypeError):
                     pass
                 else:
                     validated_value = unmarshal.call_and_store(

[version 2.20.0] TypeError: 'NoneType' object is not subscriptable
After update from version 2.19.5 to 2.20.0 I got error for code like:

```python
from marshmallow import Schema, fields, validates


class Bar(Schema):
    value = fields.String()

    @validates('value')  # <- issue here
    def validate_value(self, value):
        pass


class Foo(Schema):
    bar = fields.Nested(Bar)


sch = Foo()

sch.validate({
    'bar': 'invalid',
})
```

```
Traceback (most recent call last):
  File "/_/bug_mschema.py", line 19, in <module>
    'bar': 'invalid',
  File "/_/env/lib/python3.7/site-packages/marshmallow/schema.py", line 628, in validate
    _, errors = self._do_load(data, many, partial=partial, postprocess=False)
  File "/_/env/lib/python3.7/site-packages/marshmallow/schema.py", line 670, in _do_load
    index_errors=self.opts.index_errors,
  File "/_/env/lib/python3.7/site-packages/marshmallow/marshalling.py", line 292, in deserialize
    index=(index if index_errors else None)
  File "/_/env/lib/python3.7/site-packages/marshmallow/marshalling.py", line 65, in call_and_store
    value = getter_func(data)
  File "/_/env/lib/python3.7/site-packages/marshmallow/marshalling.py", line 285, in <lambda>
    data
  File "/_/env/lib/python3.7/site-packages/marshmallow/fields.py", line 265, in deserialize
    output = self._deserialize(value, attr, data)
  File "/_/env/lib/python3.7/site-packages/marshmallow/fields.py", line 465, in _deserialize
    data, errors = self.schema.load(value)
  File "/_/env/lib/python3.7/site-packages/marshmallow/schema.py", line 588, in load
    result, errors = self._do_load(data, many, partial=partial, postprocess=True)
  File "/_/env/lib/python3.7/site-packages/marshmallow/schema.py", line 674, in _do_load
    self._invoke_field_validators(unmarshal, data=result, many=many)
  File "/_/env/lib/python3.7/site-packages/marshmallow/schema.py", line 894, in _invoke_field_validators
    value = data[field_obj.attribute or field_name]
TypeError: 'NoneType' object is not subscriptable
```
diff --git a/tests/test_marshalling.py b/tests/test_marshalling.py
index 273dada2..8051cc25 100644
--- a/tests/test_marshalling.py
+++ b/tests/test_marshalling.py
@@ -2,7 +2,7 @@
 
 import pytest
 
-from marshmallow import fields, Schema
+from marshmallow import fields, Schema, validates
 from marshmallow.marshalling import Marshaller, Unmarshaller, missing
 from marshmallow.exceptions import ValidationError
 
@@ -283,3 +283,24 @@ class TestUnmarshaller:
 
             assert result is None
             assert excinfo.value.messages == {'foo': {'_schema': ['Invalid input type.']}}
+
+    # Regression test for https://github.com/marshmallow-code/marshmallow/issues/1342
+    def test_deserialize_wrong_nested_type_with_validates_method(self, unmarshal):
+        class TestSchema(Schema):
+            value = fields.String()
+
+            @validates('value')
+            def validate_value(self, value):
+                pass
+
+        data = {
+            'foo': 'not what we need'
+        }
+        fields_dict = {
+            'foo': fields.Nested(TestSchema, required=True)
+        }
+        with pytest.raises(ValidationError) as excinfo:
+            result = unmarshal.deserialize(data, fields_dict)
+
+            assert result is None
+            assert excinfo.value.messages == {'foo': {'_schema': ['Invalid input type.']}}

pip install -e .[dev]
parse_log_pytest
pytest
pytest
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs @ file:///croot/attrs_1668696182826/work
cachetools==5.5.2
certifi @ file:///croot/certifi_1671487769961/work/certifi
chardet==5.2.0
colorama==0.4.6
distlib==0.3.9
entrypoints==0.3
filelock==3.12.2
flake8==3.7.4
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
importlib-metadata==6.7.0
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
-e git+https://github.com/marshmallow-code/marshmallow.git@2be2d83a1a9a6d3d9b85804f3ab545cecc409bb0#egg=marshmallow
mccabe==0.6.1
packaging==24.0
platformdirs==4.0.0
pluggy==1.2.0
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pycodestyle==2.5.0
pyflakes==2.1.1
pyproject-api==1.5.3
pytest==7.1.2
python-dateutil==2.9.0.post0
pytz==2025.2
simplejson==3.20.1
six==1.17.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
tox==4.8.0
typing_extensions==4.7.1
virtualenv==20.26.6
zipp @ file:///croot/zipp_1672387121353/work

name: marshmallow
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=22.1.0=py37h06a4308_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - py=1.11.0=pyhd3eb1b0_0
  - pytest=7.1.2=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py37h06a4308_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - cachetools==5.5.2
      - chardet==5.2.0
      - colorama==0.4.6
      - distlib==0.3.9
      - entrypoints==0.3
      - filelock==3.12.2
      - flake8==3.7.4
      - importlib-metadata==6.7.0
      - mccabe==0.6.1
      - packaging==24.0
      - platformdirs==4.0.0
      - pluggy==1.2.0
      - pycodestyle==2.5.0
      - pyflakes==2.1.1
      - pyproject-api==1.5.3
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - simplejson==3.20.1
      - six==1.17.0
      - tox==4.8.0
      - typing-extensions==4.7.1
      - virtualenv==20.26.6
prefix: /opt/conda/envs/marshmallow

tests/test_marshalling.py::TestUnmarshaller::test_deserialize_wrong_nested_type_with_validates_method
tests/test_marshalling.py::test_missing_is_falsy tests/test_marshalling.py::TestMarshaller::test_prefix tests/test_marshalling.py::TestMarshaller::test_marshalling_generator tests/test_marshalling.py::TestMarshaller::test_default_to_missing tests/test_marshalling.py::TestMarshaller::test_serialize_fields_with_load_only_param tests/test_marshalling.py::TestMarshaller::test_missing_data_are_skipped tests/test_marshalling.py::TestMarshaller::test_serialize_with_load_only_doesnt_validate tests/test_marshalling.py::TestMarshaller::test_serialize_fields_with_dump_to_param tests/test_marshalling.py::TestMarshaller::test_serialize_fields_with_dump_to_and_prefix_params tests/test_marshalling.py::TestMarshaller::test_stores_indices_of_errors_when_many_equals_true tests/test_marshalling.py::TestMarshaller::test_doesnt_store_errors_when_index_errors_equals_false tests/test_marshalling.py::TestUnmarshaller::test_extra_data_is_ignored tests/test_marshalling.py::TestUnmarshaller::test_stores_errors tests/test_marshalling.py::TestUnmarshaller::test_stores_indices_of_errors_when_many_equals_true tests/test_marshalling.py::TestUnmarshaller::test_doesnt_store_errors_when_index_errors_equals_false tests/test_marshalling.py::TestUnmarshaller::test_deserialize tests/test_marshalling.py::TestUnmarshaller::test_extra_fields tests/test_marshalling.py::TestUnmarshaller::test_deserialize_many tests/test_marshalling.py::TestUnmarshaller::test_deserialize_stores_errors tests/test_marshalling.py::TestUnmarshaller::test_deserialize_fields_with_attribute_param tests/test_marshalling.py::TestUnmarshaller::test_deserialize_fields_with_load_from_param tests/test_marshalling.py::TestUnmarshaller::test_deserialize_fields_with_dump_only_param tests/test_marshalling.py::TestUnmarshaller::test_deserialize_wrong_type_root_data tests/test_marshalling.py::TestUnmarshaller::test_deserialize_wrong_type_nested_data
CHANGELOG.rst src/marshmallow/schema.py
CHANGELOG.rst src/marshmallow/schema.py