---
title: Do not throw generic exceptions
description: Datadog, the leading service for cloud-scale monitoring.
breadcrumbs: >-
  Docs > Datadog Security > Code Security > Static Code Analysis (SAST) > SAST
  Rules > Do not throw generic exceptions
---

# Do not throw generic exceptions

{% callout %}
# Important note for users on the following Datadog sites: app.ddog-gov.com

{% alert level="danger" %}
This product is not supported for your selected [Datadog site](https://docs.datadoghq.com/getting_started/site.md). ().
{% /alert %}

{% /callout %}

## Metadata{% #metadata %}

**ID:** `php-best-practices/use-specific-exceptions`

**Language:** PHP

**Severity:** Warning

**Category:** Best Practices

## Description{% #description %}

This rule states that a developer should not throw generic exceptions in PHP. The use of generic exceptions like `Exception` or `RuntimeException` is discouraged because they do not provide specific information about the type of error that occurred. This makes it harder for other developers to understand and handle the error properly.

The importance of this rule lies in enhancing code readability and maintainability. When a specific exception is thrown, it provides clear insight into what exactly went wrong and where it happened. This makes debugging easier and faster, and it also helps in handling exceptions more accurately.

To follow this rule, always define and throw custom exceptions that extend the base `Exception` class. This should be done for each different type of error that your application can encounter. Also, make sure to provide a meaningful and descriptive message with each exception. This will make your code easier to understand and maintain, and it will make debugging a much smoother process. For example, instead of throwing a generic `Exception`, you can throw a `DatabaseConnectionException` or a `FileNotFoundException`, depending on the specific error that occurred.

## Non-Compliant Code Examples{% #non-compliant-code-examples %}

```php
<?php
throw new Exception("error");
throw new RuntimeException("runtime error");
```

## Compliant Code Examples{% #compliant-code-examples %}

```php
<?php
throw new CustomException("custom error");
```
  Seamless integrations. Try Datadog Code SecurityDatadog Code Security 
{% icon name="icon-external-link" /%}
 