<commit_before><?php

namespace jugger\model;

/**
 * Трейт отвечающий за обработку модели
 */
trait ModelHandlerTrait
{
    private $_handlers = [];

    public function handle(): bool
    {
        $handlers = array_merge(
            $this->_handlers,
            static::getHandlers()
        );
        foreach ($handlers as $handler) {
            if ($handler($this) === false) {
                return false;
            }
        }
        return true;
    }

    public static function getHandlers()
    {
        return [];
    }
<commit_msg>add exception<commit_after><?php

namespace jugger\model;

use jugger\model\handler\HandleResult;
use jugger\model\handler\HandlerException;

/**
 * Трейт отвечающий за обработку модели
 */
trait ModelHandlerTrait
{
    private $_handlers = [];

    public function handle(): HandleResult
    {
        $handlers = array_merge(
            $this->_handlers,
            static::getHandlers()
        );
        foreach ($handlers as $handler) {
            try {
                $handler($this);
            }
            catch (HandlerException $ex) {
                return new HandleResult($ex);
            }
        }
        return new HandleResult();
    }

    public static function getHandlers()
    {
        return [];
    }

{'fraction_non_alphanumeric': 0.10852713178294573, 'fraction_numerical': 0.0, 'mean_word_length': 1.7703862660944205, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2852146', 'n_tokens_mistral': 365, 'n_tokens_neox': 369, 'n_words': 81}