خطأ

أحد أدوات Sumor Cloud.
المزيد من التوثيق مكتبة لمعالجة الأخطاء تدعم اللغات المتعددة، ورموز الأخطاء المحددة مسبقًا وتمرير البيانات.

CI Test Coverage Audit

التثبيت

npm i @sumor/error --save

المتطلبات الأساسية

إصدار Node.JS

يتطلب إصدار Node.JS 18.x أو أعلى

يتطلب Node.JS ES module

نظرًا لأن هذه الحزمة مكتوبة بتقنية ES module، يرجى تغيير الكود التالي في ملف package.json الخاص بك:

{
  "type": "module"
}

الاستخدام

تعريف الخطأ

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    USER_NOT_FOUND: 'المستخدم غير موجود',
    USER_EXISTED: 'المستخدم {name} موجود'
  }
})

throw new MyError('USER_NOT_FOUND')
// الإخراج: خطأ: المستخدم غير موجود

throw new MyError('USER_EXISTED', { name: 'Alice' })
// الإخراج: خطأ: المستخدم Alice موجود

اللغات المتعددة

import defineError from '@sumor/error'

const MyError = defineError({
  language: 'en', // اللغة الافتراضية
  code: {
    USER_NOT_FOUND: 'المستخدم غير موجود',
    USER_EXISTED: 'المستخدم {name} موجود'
  },
  i18n: {
    zh: {
      USER_NOT_FOUND: 'المستخدم غير موجود',
      USER_EXISTED: 'المستخدم {name} موجود'
    }
  }
})

const error = new MyError('USER_EXISTED', { name: 'Alice' })
error.language = 'en' // تغيير لغة الخطأ
console.log(error)
// الإخراج: خطأ: المستخدم Alice موجود

error.language = 'zh' // تغيير لغة الخطأ
console.log(error)
// الإخراج: خطأ: المستخدم Alice موجود

تحويل الخطأ إلى JSON

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    USER_NOT_FOUND: 'المستخدم غير موجود',
    USER_EXISTED: 'المستخدم {name} موجود'
  }
})

const error = new MyError('USER_EXISTED', { name: 'Alice' })
console.log(error.json())
// الإخراج: {"code":"USER_EXISTED","message":"المستخدم Alice موجود"}

الخطأ الأساسي

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    FIELD_VERIFY_FAILED: 'فشل التحقق من الحقل',
    FIELD_CANNOT_EMPTY: 'الحقل {name} لا يمكن أن يكون فارغًا',
    FIELD_TOO_LONG: 'الحقل {name} طويل جدًا'
  },
  i18n: {
    zh: {
      FIELD_VERIFY_FAILED: 'فشل التحقق من الحقل',
      FIELD_CANNOT_EMPTY: 'الحقل {name} لا يمكن أن يكون فارغًا',
      FIELD_TOO_LONG: 'الحقل {name} طويل جدًا'
    }
  }
})

const error = new MyError('FIELD_VERIFY_FAILED', {}, [
  new MyError('FIELD_CANNOT_EMPTY', { name: 'اسم المستخدم' }),
  new MyError('FIELD_TOO_LONG', { name: 'كلمة السر' })
])

console.log(error.json())
/* 
الإخراج: 
{
  "code":"FIELD_VERIFY_FAILED",
  "message":"فشل التحقق من الحقل",
  "errors":[
    {
      "code":"FIELD_CANNOT_EMPTY",
      "message":"الحقل اسم المستخدم لا يمكن أن يكون فارغًا"
    },{
      "code":"FIELD_TOO_LONG",
      "message":"الحقل كلمة السر طويل جدًا"
    }
  ]
}
*/

error.language = 'zh'
console.log(error.json())
/*
الإخراج:
{
  "code":"FIELD_VERIFY_FAILED",
  "message":"فشل التحقق من الحقل",
  "errors":[
    {
      "code":"FIELD_CANNOT_EMPTY",
      "message":"الحقل اسم المستخدم لا يمكن أن يكون فارغًا"
    },{
      "code":"FIELD_TOO_LONG",
      "message":"الحقل كلمة السر طويل جدًا"
    }
  ]
}
*/

دمج الأخطاء القياسية

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    FIELD_VERIFY_FAILED: 'فشل التحقق من الحقل',
    FIELD_CANNOT_EMPTY: 'الحقل {name} لا يمكن أن يكون فارغًا',
    FIELD_TOO_LONG: 'الحقل {name} طويل جدًا'
  }
})

const error = new MyError('FIELD_VERIFY_FAILED', {}, [
  new MyError('FIELD_CANNOT_EMPTY', { name: 'اسم المستخدم' }),
  new MyError('FIELD_TOO_LONG', { name: 'كلمة السر' }),
  new Error('خطأ غير معروف')
])

console.log(error.json())
/*
الإخراج:
{
  "code":"FIELD_VERIFY_FAILED",
  "message":"فشل التحقق من الحقل",
  "errors":[
    {
      "code":"FIELD_CANNOT_EMPTY",
      "message":"الحقل اسم المستخدم لا يمكن أن يكون فارغًا"
    },{
      "code":"FIELD_TOO_LONG",
      "message":"الحقل كلمة السر طويل جدًا"
    },{
      "code":"UNKNOWN_ERROR",
      "message":"خطأ غير معروف"
    }
  ]
}
 */