Handling errors from Plug.Parser

For file sanity checks that is being uploaded to phoenix ,

  • To validate mime, filename,etc
    • we get a Plug.Upload after being parsed by Plug.Parser, in actions.
  • but to put file size limit , Plug.Parsers are used.
    • in router
    • or in endpoint

But if file is large than given certain threshold, it raises.
exceptions.

defmodule RequestTooLargeError do
    @moduledoc """
    Error raised when the request is too large.
    """

    defexception message:
                   "the request is too large. If you are willing to process " <>
                     "larger requests, please give a :length to Plug.Parsers",
                 plug_status: 413
  end

how do i show info to the user, that what happened?. Instead of internal server error

defmodule RTValues do
  @moduledoc false

  def size_limit(), do: Application.get_env(:core, :size_limit)

  def parser_options(),i
    do: [
      parsers: [
        :urlencoded,
        {:multipart, length: size_limit()},
        :json
      ],
      pass: ["*/*"],
      json_decoder: Phoenix.json_library()
    ]
end
defmodule Web.Router do

    pipeline :browser do
      plug Plug.Parsers,RTValues.parser_options()
     .
     . 
     .
    end
    .
    .
    .
  end

how do i show info to the user, that what happened?. Instead of internal server error
what am i doing wrong?
SAME GOES FOR API ONLY ENDPOINT HANDLING

The plug upload limit is more of a safety feature than a validation. Consider using something like live view uploads if you want a more modern and interactive upload experience that will make it easier to provide feedback on stuff like file size.

what about api endpoints?

use Plug.ErrorHandler
but dont know how to use that
i tried calling Parser from custom parser but that also didint work