---
title: "Django の例外"
version: 2.0
locale: ja
source: https://docs.djangoproject.com/ja/2.0/ref/exceptions/
canonical: https://djangodocs.dev/ja/2.0/ref/exceptions/
---
# Django の例外

Django は普通の Python の例外の他に、いくつか独自の例外も起こします。

## Django Core 例外

Django core 例外クラスは `django.core.exceptions` で定義されています。

### `AppRegistryNotReady`

#### `exception AppRegistryNotReady`

This exception is raised when attempting to use models before the [app
loading process](/ja/2.0/ref/applications/#app-loading-process), which initializes the ORM, is
complete.

### `ObjectDoesNotExist`

#### `exception ObjectDoesNotExist`

The base class for [`DoesNotExist`](/ja/2.0/ref/models/instances/#django.db.models.Model.DoesNotExist) exceptions;
a `try/except` for `ObjectDoesNotExist` will catch
[`DoesNotExist`](/ja/2.0/ref/models/instances/#django.db.models.Model.DoesNotExist) exceptions for all models.

See [`get()`](/ja/2.0/ref/models/querysets/#django.db.models.query.QuerySet.get) for further information
on [`ObjectDoesNotExist`](#django.core.exceptions.ObjectDoesNotExist) and [`DoesNotExist`](/ja/2.0/ref/models/instances/#django.db.models.Model.DoesNotExist).

### `EmptyResultSet`

#### `exception EmptyResultSet`

`EmptyResultSet` may be raised during query generation if a query won't
return any results. Most Django projects won't encounter this exception,
but it might be useful for implementing custom lookups and expressions.

> **Changed in Django 1.11**
>
> In older versions, it's only importable from `django.db.models.sql`.

### `FieldDoesNotExist`

#### `exception FieldDoesNotExist`

The `FieldDoesNotExist` exception is raised by a model's
`_meta.get_field()` method when the requested field does not exist on the
model or on the model's parents.

### `MultipleObjectsReturned`

#### `exception MultipleObjectsReturned`

The [`MultipleObjectsReturned`](#django.core.exceptions.MultipleObjectsReturned) exception is raised by a query if only
one object is expected, but multiple objects are returned. A base version
of this exception is provided in [`django.core.exceptions`](#module-django.core.exceptions); each model
class contains a subclassed version that can be used to identify the
specific object type that has returned multiple objects.

詳しくは [`get()`](/ja/2.0/ref/models/querysets/#django.db.models.query.QuerySet.get) を見てください。

### `SuspiciousOperation`

#### `exception SuspiciousOperation`

The [`SuspiciousOperation`](#django.core.exceptions.SuspiciousOperation) exception is raised when a user has
performed an operation that should be considered suspicious from a security
perspective, such as tampering with a session cookie. Subclasses of
`SuspiciousOperation` include:

- `DisallowedHost`
- `DisallowedModelAdminLookup`
- `DisallowedModelAdminToField`
- `DisallowedRedirect`
- `InvalidSessionKey`
- `RequestDataTooBig`
- `SuspiciousFileOperation`
- `SuspiciousMultipartForm`
- `SuspiciousSession`
- `TooManyFieldsSent`

`SuspiciousOperation` 例外が WSGI ハンドラーのレベルに到達すると、`Error` レベルがログに記録され、[`HttpResponseBadRequest`](/ja/2.0/ref/request-response/#django.http.HttpResponseBadRequest) が返されます。詳しくは [logging documentation](/ja/2.0/topics/logging/) を参照してください。

### `PermissionDenied`

#### `exception PermissionDenied`

[`PermissionDenied`](#django.core.exceptions.PermissionDenied) 例外は、ユーザーにリクエストされたアクションを実行する権限がない場合に発生します。

### `ViewDoesNotExist`

#### `exception ViewDoesNotExist`

[`ViewDoesNotExist`](#django.core.exceptions.ViewDoesNotExist) 例外は、リクエストされたビューが存在しないい場合に、[`django.urls`](/ja/2.0/ref/urlresolvers/#module-django.urls) によって発生します。

### `MiddlewareNotUsed`

#### `exception MiddlewareNotUsed`

[`MiddlewareNotUsed`](#django.core.exceptions.MiddlewareNotUsed) 例外は、サーバーの設定の中でミドルウェアが使用されなかった時に発生します。

### `ImproperlyConfigured`

#### `exception ImproperlyConfigured`

[`ImproperlyConfigured`](#django.core.exceptions.ImproperlyConfigured) 例外は、Django が何らかの点で不適切に設定されている場合に発生します。たとえば、`settings.py` に含まれる値が不正であったり、パースできないような場合が考えられます。

### `FieldError`

#### `exception FieldError`

[`FieldError`](#django.core.exceptions.FieldError) 例外は、モデルのフィールドに問題がある時に発生します。発生理由としては、次のようないくつかの理由が考えられます。

- A field in a model clashes with a field of the same name from an
  abstract base class
- An infinite loop is caused by ordering
- A keyword cannot be parsed from the filter parameters
- A field cannot be determined from a keyword in the query
  parameters
- A join is not permitted on the specified field
- A field name is invalid
- A query contains invalid order\_by arguments

### `ValidationError`

#### `exception ValidationError`

[`ValidationError`](#django.core.exceptions.ValidationError) 例外は、データがフォームまたはモデルのフィールド検証に失敗すると発生します。検証 (validation) のより詳しい情報については、[Form and Field Validation](/ja/2.0/ref/forms/validation/) や [Model Field Validation](/ja/2.0/ref/models/instances/#validating-objects)、[Validator Reference](/ja/2.0/ref/validators/) を参照してください。

#### `NON_FIELD_ERRORS`

#### `NON_FIELD_ERRORS`

`ValidationError`s that don't belong to a particular field in a form
or model are classified as `NON_FIELD_ERRORS`. This constant is used
as a key in dictionaries that otherwise map fields to their respective
list of errors.

## URL Resolver の例外

URL Resolver の例外は `django.urls` で定義されています。

### `Resolver404`

#### `exception Resolver404`

The [`Resolver404`](#django.urls.Resolver404) exception is raised by
[`resolve()`](/ja/2.0/ref/urlresolvers/#django.urls.resolve) if the path passed to `resolve()` doesn't
map to a view. It's a subclass of [`django.http.Http404`](/ja/2.0/topics/http/views/#django.http.Http404).

### `NoReverseMatch`

#### `exception NoReverseMatch`

The [`NoReverseMatch`](#django.urls.NoReverseMatch) exception is raised by [`django.urls`](/ja/2.0/ref/urlresolvers/#module-django.urls) when a
matching URL in your URLconf cannot be identified based on the parameters
supplied.

## データベースの例外

データベースの例外は `django.db` からインポートできます。

Django wraps the standard database exceptions so that your Django code has a
guaranteed common implementation of these classes.

#### `exception Error`

#### `exception InterfaceError`

#### `exception DatabaseError`

#### `exception DataError`

#### `exception OperationalError`

#### `exception IntegrityError`

#### `exception InternalError`

#### `exception ProgrammingError`

#### `exception NotSupportedError`

The Django wrappers for database exceptions behave exactly the same as
the underlying database exceptions. See [**PEP 249**](https://peps.python.org/pep-0249/), the Python Database API
Specification v2.0, for further information.

As per [**PEP 3134**](https://peps.python.org/pep-3134/), a `__cause__` attribute is set with the original
(underlying) database exception, allowing access to any additional
information provided.

#### `exception models.ProtectedError`

Raised to prevent deletion of referenced objects when using
[`django.db.models.PROTECT`](/ja/2.0/ref/models/fields/#django.db.models.PROTECT). [`models.ProtectedError`](#django.db.models.ProtectedError) is a subclass
of [`IntegrityError`](#django.db.IntegrityError).

## Http の例外

Http の例外は `django.http` からインポートすることができます。

### `UnreadablePostError`

#### `exception UnreadablePostError`

[`UnreadablePostError`](#django.http.UnreadablePostError) は、ユーザーがアップロードをキャンセルすると発生します。

## トランザクションの例外

トランザクションの例外は `django.db.transaction` で定義されています。

### `TransactionManagementError`

#### `exception TransactionManagementError`

[`TransactionManagementError`](#django.db.transaction.TransactionManagementError) が発生するのは、データベースのトランザクションに関するあらゆる問題に対してです。

## テストフレームワークの例外

`django.test` パッケージが提供する例外です。

### `RedirectCycleError`

#### `exception client.RedirectCycleError`

[`RedirectCycleError`](#django.test.client.RedirectCycleError) は、テストクライアントがループまたは過度に長いリダイレクトチェーンを検出した時に発生します。

## Python の例外

Django は、十分適切な場合にはビルトインの Python の例外を起こします。詳しい情報については、Python のドキュメント [Built-in Exceptions](https://docs.python.org/3/library/exceptions.html#bltin-exceptions) を読んでください。
