Создайте свой класс исключения, например, MyHttpException.php:
<?php
namespace app\components;
use yii\web\HttpException;
class MyHttpException extends HttpException
{
public function renderJson()
{
$response = \Yii::$app->getResponse();
$response->data = [
'message' => $this->getMessage(),
];
$response->send();
}
}
В вашем коде, где вы хотите выбросить исключение с новым форматом ответа, используйте ваш новый класс MyHttpException:
<?php
use app\components\MyHttpException;
try {
// Код, который может вызвать исключение
throw new MyHttpException('Ваше сообщение об ошибке', 500);
} catch (MyHttpException $e) {
$e->renderJson(); // Отправляем ответ в формате {"message": "..."}
}