Набор символов ошибки

Ошибка Символы и названия условий

Когда вы сигнализируете об ошибке, вы указываете символ ошибки, чтобы указать вид ошибки, которую вы имеете в виду. Каждая ошибка имеет один и только один символ ошибки для ее классификации. Это лучшая классификация ошибок, определенная языком Emacs Lisp.

Эти узкие классификации сгруппированы в иерархию более широких классов, называемых состояниями ошибок , которые идентифицируются именами условий . Самые узкие такие классы принадлежат самим символам ошибок: каждый символ ошибки также является именем условия. Существуют также имена условий для более обширных классов, вплоть до error имени условия, которая принимает все виды ошибок (но не quit ). Таким образом, каждая ошибка имеет одно или несколько имен условий: error , символ ошибки, если он отличается от error , и, возможно, некоторые промежуточные классификации.

Функция: определение- сообщение об ошибке и необязательный родительский элемент

Чтобы символ был символом ошибки, он должен быть определен с помощью define-error , которая принимает родительское условие (по умолчанию error ). Этот родитель определяет условия, которым принадлежит этот вид ошибки. Переходный набор родителей всегда включает в себя сам символ error и символ ошибки . Поскольку выход не считается ошибкой, набор родительских элементов для quit — это просто (quit) выход ) .

В дополнение к своим родителям символ ошибки имеет message , представляющее собой строку, которая будет напечатана, когда об этой ошибке сообщается, но она не обрабатывается. Если это сообщение недопустимо, сообщение об ошибке ‘peculiar error‘ используется. См. Определение сигнала .

Внутри набор родительских элементов сохраняется в свойстве error-conditions символа ошибки, а сообщение сохраняется в свойстве error-message символа ошибки.

Вот как мы определяем новый символ ошибки, new-error :

(define-error 'new-error "A new error" 'my-own-errors)

У этой ошибки есть несколько названий условий: new-error , самая узкая классификация; my-own-errors , которые, как мы представляем, являются более широкой классификацией; и все условия my-own-errors которые должны включать error , которая является самой широкой из всех.

Строка ошибки должна начинаться с большой буквы,но не должна заканчиваться периодом.Это для согласованности с остальными Emacs.

Естественно, Emacs никогда не будет сигнализировать о new-error по себе; только явный вызов signal (см. Определение сигнала ) в вашем коде может сделать это:

(signal 'new-error '(x y))
     error→ A new error: x, y

Эту ошибку можно обработать с помощью любого из ее имен условий. В этом примере обрабатывается new-error и любые другие ошибки в классе my-own-errors :

(condition-case foo
    (bar nil t)
  (my-own-errors nil))

Важным способом классификации ошибок является их имена условий — имена, используемые для сопоставления ошибок с обработчиками. Символ ошибки служит только удобным способом указать предполагаемое сообщение об ошибке и список имен условий. Было бы неудобно давать signal список имен условий, а не один символ ошибки.

Напротив, использование только символов ошибок без имен условий серьезно снизило бы силу condition-case . Когда вы пишете обработчик ошибок, имена условий позволяют категоризировать ошибки на различных уровнях универсальности. Использование одних только символов ошибок устранит все, кроме самого узкого уровня классификации.

См. Стандартные ошибки для получения списка основных символов ошибок и их состояний.


Elisp

28.2

  • Ввод отладчика при ошибке

  • Error Messages

  • Errors

  • Eval

 dbi, locale, perl


0

1

Как поменять кодировку или локаль для DBI?
Ругается на что-то, но вот на что — не понять.

[Tue Apr 16 14:22:08 2013] [error] DBI connect('dbname=mg;host=127.0.0.1','game',...) failed: �����:  о��ав�ие�� �ло�� подкл��ений за�езе�ви�ован� дл� подкл��ений ��пе�пол�зова�ел� (не дл� �еплика�ии) at /usr/lib/perl5/site_perl/5.16.0/Rose/DB.pm line 965.
  • Ссылка

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.

У меня есть две ошибки набора символов, которые мешают мне посеять мою базу данных со старым содержимым базы данных.

1. Код ошибки 1366: Неверное строковое значение «\ xDB»

Я попытался изменить CHARACTER SET моего TABLE на utf8mb4.

Я посмотрел, что \xDB будет как тип символа, и наткнулся на это. Это заставило меня поверить в формат Javascript escape. Однако я не могу найти MySQL CHARACTER SET который поддерживает это.

Даже если я найду CHARACTER SET который поддерживает формат escape- utf8mb4 Javascript, не лучше ли преобразовать все в более стандартный и всеохватывающий utf8mb4? Как это будет сделано?

2. Код ошибки 1300: Неверная строка символов utf8mb4

Это оскорбительный характер:

Опять же, я пробовал подобные вещи, как упоминалось выше, с небольшим успехом.

РЕДАКТИРОВАТЬ:

Я установил CHARACTER SET в новую базу данных следующим образом:

CREATE TABLE 'products' (
    'product_id' INT NOT NULL AUTO_INCREMENT UNIQUE,
    'product_line' VARCHAR(255) NOT NULL,
    'product_num' VARCHAR(255) NOT NULL,
    'description' LONGTEXT NOT NULL,
    PRIMARY KEY ('product_id')
) CHARACTER SET utf8mb4 ;

EDIT 2:

Я не знал, что это имело значение, но проблема LOAD DATA INFILE при выполнении LOAD DATA INFILE следующим образом:

USE 'inventory';

LOAD DATA INFILE
'all_products.csv'
INTO TABLE 'products'
    FIELDS
        TERMINATED BY ','
        OPTIONALLY ENCLOSED BY '"'
    LINES
        TERMINATED BY ',\r\n'
IGNORE 1 ROWS
('product_line','product_num','description');

Понравилась статья? Поделить с друзьями:
  • На что влияет ошибка катализатора
  • Наблюдение виды наблюдения ошибки наблюдения
  • На этой странице произошла ошибка сценария kmplayer
  • На что влияет ошибка егр
  • Наблюдателю свойственны субъективные ошибки