11 October 2023

Exceptionfilter in Controller level in C#

 In the context of ASP.NET Web API or ASP.NET Core MVC, an exception filter is a mechanism that allows you to handle exceptions globally at the controller level. Exception filters are attributes that you can apply to a controller or a specific action method within the controller. These filters are executed whenever an unhandled exception is thrown during the execution of the controller action methods.

Here's how you can create and use an exception filter at the controller level in ASP.NET Core MVC:


```csharp

// Custom Exception Filter

public class CustomExceptionFilterAttribute : ExceptionFilterAttribute

{

    public override void OnException(ExceptionContext context)

    {

        // Handle the exception here

        // You can log the exception, customize the error response, etc.

        context.ExceptionHandled = true; // Mark the exception as handled

        context.Result = new JsonResult(new { error = "An error occurred" })

        {

            StatusCode = StatusCodes.Status500InternalServerError

        };

    }

}


// Applying the Exception Filter at the Controller Level

[ApiController]

[Route("api/[controller]")]

[CustomExceptionFilter] // Apply the custom exception filter at the controller level

public class SampleController : ControllerBase

{

    // GET api/sample

    [HttpGet]

    public IActionResult Get()

    {

        // Code that might throw an exception

        throw new Exception("This is a sample exception.");

    }

}

```

In the example above, `CustomExceptionFilterAttribute` is a custom exception filter that inherits from `ExceptionFilterAttribute`. It overrides the `OnException` method to handle exceptions. In this case, it marks the exception as handled, creates a custom error response, and sets the response status code to 500 Internal Server Error.

By applying the `[CustomExceptionFilter]` attribute at the controller level, the filter will be applied to all action methods within the `SampleController` class. When an exception occurs in any of the action methods, the `OnException` method of the `CustomExceptionFilterAttribute` will be invoked, allowing you to handle the exception in a centralized manner.

Remember that exception filters are just one way to handle exceptions in ASP.NET Core. Depending on your requirements, you might also consider using middleware or other global error handling techniques provided by the framework.

No comments:

Post a Comment

Comments Welcome

Consistency level in Azure cosmos db

 Consistency level in Azure cosmos db Azure Cosmos DB offers five well-defined consistency levels to provide developers with the flexibility...