خطأ

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

CI Test Coverage Audit

التثبيت

npm i @sumor/error --save

المتطلبات

إصدار Node.JS

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

احتياج إلى وحدة ES الخاصة بـ Node.JS

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

{
  "type": "module"
}

الاستخدام

تعريف الخطأ

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    USER_NOT_FOUND: 'User not found',
    USER_EXISTED: 'User {name} existed'
  }
})

throw new MyError('USER_NOT_FOUND')
// output: Error: User not found

throw new MyError('USER_EXISTED', { name: 'Alice' })
// output: Error: User Alice existed

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

import defineError from '@sumor/error'

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

const error = new MyError('USER_EXISTED', { name: 'Alice' })
error.language = 'en' // تغيير لغة الخطأ
console.log(error)
// output: Error: User Alice existed

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

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

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    USER_NOT_FOUND: 'User not found',
    USER_EXISTED: 'User {name} existed'
  }
})

const error = new MyError('USER_EXISTED', { name: 'Alice' })
console.log(error.json())
// output: {"code":"USER_EXISTED","message":"User Alice existed"}

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

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    FIELD_VERIFY_FAILED: 'Field verify failed',
    FIELD_CANNOT_EMPTY: 'Field {name} cannot be empty',
    FIELD_TOO_LONG: 'Field {name} is too long'
  },
  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())
/* 
output: 
{
  "code":"FIELD_VERIFY_FAILED",
  "message":"Field verify failed",
  "errors":[
    {
      "code":"FIELD_CANNOT_EMPTY",
      "message":"الحقل اسم المستخدم لا يمكن أن يكون فارغًا"
    },{
      "code":"FIELD_TOO_LONG",
      "message":"الحقل كلمة المرور طويل جدًا"
    }
  ]
}
*/

error.language = 'zh'
console.log(error.json())
/*
output:
{
  "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 verify failed',
    FIELD_CANNOT_EMPTY: 'Field {name} cannot be empty',
    FIELD_TOO_LONG: 'Field {name} is too long'
  }
})

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())
/*
output:
{
  "code":"FIELD_VERIFY_FAILED",
  "message":"Field verify failed",
  "errors":[
    {
      "code":"FIELD_CANNOT_EMPTY",
      "message":"الحقل اسم المستخدم لا يمكن أن يكون فارغًا"
    },{
      "code":"FIELD_TOO_LONG",
      "message":"الحقل كلمة المرور طويل جدًا"
    },{
      "code":"UNKNOWN_ERROR",
      "message":"خطأ غير معروف"
    }
  ]
}
 */