ES6 সিনট্যাক্স এবং ব্যাবেল সহ জাভাস্ক্রিপ্টে ত্রুটি বাড়ানো হচ্ছে


132

আমি ES6 এবং ব্যাবেল দিয়ে ত্রুটি প্রসারিত করার চেষ্টা করছি। এটি কাজ করে না।

class MyError extends Error {
  constructor(m) {
    super(m);
  }
}

var error = new Error("ll");
var myerror = new MyError("ll");
console.log(error.message) //shows up correctly
console.log(myerror.message) //shows empty string

ত্রুটি বস্তু কখনই সঠিক বার্তা সেট পায় না।

বাবেল REPL এ চেষ্টা করুন

এখন আমি এসও-তে কয়েকটি সমাধান দেখেছি ( উদাহরণস্বরূপ এখানে ), তবে এগুলি সমস্তই খুব অন-ইএস 6-ওয়াই বলে মনে হচ্ছে। এটি কীভাবে সুন্দর, ES6 উপায়ে করবেন? (এটি বাবেলে কাজ করছে)


2
আপনার বাবেল আরপিএল লিঙ্ক অনুসরণ করে মনে হয় যে এটি এখন সঠিকভাবে কাজ করে। আমি ধারণা করি এটি বাবেলে একটি বাগ ছিল যা তখন থেকে ঠিক হয়ে গেছে।
kybernetikos

উত্তর:


188

কারেল বেলেকের উত্তরের ভিত্তিতে, আমি এতে একটি ছোট পরিবর্তন করব constructor:

class ExtendableError extends Error {
  constructor(message) {
    super(message);
    this.name = this.constructor.name;
    if (typeof Error.captureStackTrace === 'function') {
      Error.captureStackTrace(this, this.constructor);
    } else { 
      this.stack = (new Error(message)).stack; 
    }
  }
}    

// now I can extend

class MyError extends ExtendableError {}

var myerror = new MyError("ll");
console.log(myerror.message);
console.log(myerror instanceof Error);
console.log(myerror.name);
console.log(myerror.stack);

এটি MyErrorস্ট্যাকে মুদ্রণ করবে , এবং জেনেরিক নয় Error

এটি স্ট্যাক ট্রেসটিতে ত্রুটি বার্তা যুক্ত করবে - যা কারেলের উদাহরণ থেকে অনুপস্থিত ছিল।

এটি captureStackTraceউপলব্ধ থাকলে এটিও ব্যবহার করবে ।

ব্যাবেল 6 এর সাথে আপনার কাজ করার জন্য ট্রান্সফর্ম বিল্টিন- এক্সটেন্ড ( এনপিএম ) প্রয়োজন।


1
@MichaelYounkin if (typeof Error.captureStackTrace === 'function') { Error.captureStackTrace(this, this.constructor.name) } else { this.stack = (new Error(message)).stack; } । আমি যুক্তি দিয়ে বলছি যে এটি উপলব্ধ থাকলে এই ফাংশনটি ব্যবহার করা আরও ভাল। অবশ্যই, আপনি যদি এটি সম্পূর্ণরূপে সার্ভার-সাইডেও (নোড) ব্যবহার করেন তবে এটিও কোনও সমস্যা নয়।
লি বেনসন

4
@ মিশেল ইউউইনকিনী আমি ভাবি না যে এটি কোনও ডাউনটা পাওয়ার যোগ্য। ওপি ইএস 6-তে ত্রুটি বাড়ানোর বিষয়ে কথা বলেছে। এই যুক্তি অনুসরণ করে, কমপক্ষে একটি ব্রাউজার থেকে প্রায় সমস্ত ES6 অনুপস্থিত। আমার সমাধান (যুক্ত ফান চেক সহ) সর্বাধিক ব্যবহৃত ব্রাউজারে নেটিভ কভারেজ, অন্য একেবারে পড়ে এবং নোড.জেএস-তে 100% কভারেজ সরবরাহ করে provides আমি সম্মত হই যে আপনি যদি ত্রুটিযুক্ত শ্রেণিবদ্ধের ধারাবাহিকভাবে ত্রুটি করেন তবে তা this.stack = (new Error(message)).stackআপনাকে পেয়ে যায় ... তবে বাস্তবে , এটি সম্ভবত একটি বিশাল চুক্তি নয়।
লি বেনসন 11

6
এটি বাবেল 6 তে কাজ করে না:new MyError('foo') instanceof MyError === false
সুকিমা

5
এই কোডটি এনপিএম মডিউল হিসাবে extendable-error-class বাবেলের সাথে প্রাক-সংকলিত: npmjs.com/package/extendable-error-class যা ব্যাবেল -প্লাগইন-ট্রান্সফর্ম-
বিল্টিন

3
this.message = message;অপ্রয়োজনীয়super(message);
ম্যাথিউগ

39

এই উত্তর , এই উত্তর এবং এই কোডটির সংমিশ্রণে , আমি এই ছোট "সহায়ক" বর্গ তৈরি করেছি, যা কাজটি দুর্দান্ত বলে মনে হচ্ছে।

class ExtendableError extends Error {
  constructor(message) {
    super();
    this.message = message; 
    this.stack = (new Error()).stack;
    this.name = this.constructor.name;
  }
}    

// now I can extend

class MyError extends ExtendableError {
  constructor(m) {   
    super(m);
  }
}

var myerror = new MyError("ll");
console.log(myerror.message);
console.log(myerror instanceof Error);
console.log(myerror.name);
console.log(myerror.stack);

REPL এ চেষ্টা করুন


1
this.stack = (new Error(message)).stack;- অন্যথায় বার্তাটি স্ট্যাকট্রেস থেকে অনুপস্থিত
লি বেনসন

3
আমি সন্দেহ করি যে এটি প্রয়োজনীয় হিসাবে কাজ করে না, কারণ যদি আপনি এটি করেন: কনসোল.লগ (এক্সটেন্ডেবল এরিয়ার মাইরোর উদাহরণ); এটি এখনও মিথ্যা বলে ..
মাওনো Vähä

4
একই সমস্যা, কাস্টমএররর উদাহরণ ব্যবহার করে কাজ করে না, উদাহরণস্বরূপ আপনি যদি ব্যবহার না করতে পারেন তবে কী হবে extend
গ্রেট

এটি messageত্রুটি স্ট্যাক নির্মাণকারীকে যুক্ত করে উন্নত করা যেতে পারে , তাই এটি নিক্ষেপ করার সময় স্ট্যাকের শীর্ষে সঠিক বার্তাটি দেখায়:this.stack = (new Error(message)).stack;
সেবাস্তিয়ান

1
myerror.nameএখন "ত্রুটি" প্রদান করে। এটি বাবেলের পরবর্তী সংস্করণগুলির সাথে সম্পর্কিত কিনা তা নিশ্চিত নয় below নীচে @ সুকিমার উত্তর দেখুন
এরিক এইচ।

27

অবশেষে এটি বিশ্রাম করা। হট্টগোল 6 এটা স্পষ্ট যে ডেভেলপারদের হয় সমর্থন করি না সালে নির্মিত থেকে ব্যাপ্ত। যদিও এই কৌতুক করা হবে না জিনিস দিয়ে সাহায্যের পছন্দ Map, Setইত্যাদি জন্য কাজ করে Error। এটি এমন একটি ভাষার মূল ধারণা হিসাবে গুরুত্বপূর্ণ যা একটি ব্যতিক্রম ছুঁড়ে ফেলতে পারে কাস্টম ত্রুটিগুলিকে অনুমতি দেওয়া। এটি দ্বিগুণ গুরুত্বপূর্ণ কারণ প্রতিশ্রুতিগুলি আরও কার্যকর হয়ে যায় কারণ সেগুলি ত্রুটি প্রত্যাখ্যান করার জন্য তৈরি করা হয়েছিল

দুঃখজনক সত্যটি আপনার এখনও ES2015 এ পুরানো পদ্ধতিতে করা দরকার।

বাবেল আরপিএলে উদাহরণ

কাস্টম ত্রুটি নিদর্শন

class MyError {
  constructor(message) {
    this.name = 'MyError';
    this.message = message;
    this.stack = new Error().stack; // Optional
  }
}
MyError.prototype = Object.create(Error.prototype);

অন্যদিকে এটি অনুমোদিত করার জন্য ব্যাবেল 6 এর জন্য একটি প্লাগইন রয়েছে।

https://www.npmjs.com/package/babel-plugin-transform-builtin-extend

আপডেট: (২০১-0-০৯-২৯ হিসাবে) কিছু পরীক্ষার পরে দেখা যাচ্ছে যে বাবেল.ইও সঠিকভাবে সমস্ত দাবির জন্য অ্যাকাউন্ট করে না (একটি কাস্টম বর্ধিত ত্রুটি থেকে প্রসারিত)। তবে এমবার.জেএস এর প্রসারণ ত্রুটি প্রত্যাশার মতো কাজ করে: https://ember-twizz.com/d88555a6f408174df0a4c8e0fd6b27ce


হ্যাঁ, লিঙ্কযুক্ত ব্যাবেল প্লাগইন সহ এটি গৃহীত উত্তরের সাথে সঠিকভাবে কাজ করে। (তবে, ফলস্বরূপ ফাইলটি নোডে কাজ করে না, কারণ এতে দৃশ্যত প্রতিফলিত হয়নি)
কারেল বালেক

ঠিক একটি কৌতূহল হিসাবে, যদি ES2016 স্পেসগুলি বলে যে বিল্টিনগুলি প্রসারিত হয় তবে ভিএমএসের মতো ভিএমএস এবং বাবেলের এস 5 এর বিপরীতে এত সরানো কেন? প্রোটোটাইপ চেইন অন্য প্রোটোটাইপ থেকে যেভাবে প্রোটোটাইপ চেইন আসতে পারে সেভাবে কোনও শ্রেণি শ্রেণি প্রসারিত করতে পারে কি এটি যুক্তিসঙ্গত প্রত্যাশা নয়? প্লাগিনে কেন এই জাতীয় সিরামির প্রয়োজন লুকানো আছে?
সুকিমা

যখন বেশিরভাগ ব্যবহারের ক্ষেত্রে কেবল এমন সাধারণ অবজেক্ট তৈরি করতে চান যা এই আচরণটি ভাগ করে দেয় তখন এটি বিশেষত হতাশ। একটি কাস্টম ত্রুটি যা ব্যবহার করতে পারে Error.toString()। এটি সম্পাদন করার জন্য বিশেষ হুপস এবং গিরিশনগুলি করার দরকার হ'ল বেশিরভাগ ডেভগুলি এড়াতে সক্ষম হবে এবং ত্রুটির পরিবর্তে স্ট্রিং নিক্ষেপের মতো খারাপ অভ্যাসগুলিকে অবলম্বন করবে। বা তাদের নিজস্ব মানচিত্রকে বস্তুর মতো তৈরি করা। কেন এই ধরনের ওওপি পদ্ধতি নিরস্ত করা দরকার?
সুকিমা

আমার মতে তারা এর বিরোধী নয়, এটি কেবল কিছু প্রযুক্তিগত সমস্যা। যদিও আমি নিশ্চিত নই! আপনি তাদের জিজ্ঞাসা করতে পারেন :) প্রকল্পগুলি বেশ খোলা আছে
কারেল বালেক

এখনও পর্যন্ত বিষয়টিতে সিমুলার প্রশ্নগুলি থেকে সমস্ত প্রতিক্রিয়াগুলি "বাবেল এটি সমর্থন করে না" এ রেখে গেছে fig আমি বুঝতে পেরেছিলাম যে কথোপকথনের শেষ। আমার গরুর মাংস হ'ল সহায়তার অভাব একটি সাধারণ ওওপি প্রতিবাদকে কঠিন করে তোলে এবং বয়লারপ্লেট ক্রাফটটি পেতে তাদের সহ-ভোকারদের সাথে লড়াই করতে হয়েছিল আমারও। আমি কেবল এখানে একটি পরিষ্কার বিকল্প workaround চাই। মনে হয় একটি প্লাগইন যুক্ত করা তখন সেরা পছন্দ।
সুকিমা

15

সম্পাদনা করুন : টাইপস্ক্রিপ্ট ২.১-এ পরিবর্তন ভঙ্গ করা

ত্রুটি, অ্যারে এবং মানচিত্রের মতো বিল্ট-ইনগুলি প্রসারিত করা আর কাজ করতে পারে না।

একটি সুপারিশ হিসাবে, আপনি কোনও সুপার (...) কল করার সাথে সাথেই ম্যানুয়ালি প্রোটোটাইপটি সামঞ্জস্য করতে পারেন।

লি বেনসনের মূল উত্তরটি সম্পাদনা করা আমার পক্ষে কিছুটা কার্যকর। এটি উদাহরণে ক্লাসের stackঅতিরিক্ত পদ্ধতি যুক্ত করে ExtendableError

class ExtendableError extends Error {
   constructor(message) {
       super(message);
       Object.setPrototypeOf(this, ExtendableError.prototype);
       this.name = this.constructor.name;
   }
   
   dump() {
       return { message: this.message, stack: this.stack }
   }
 }    

class MyError extends ExtendableError {
    constructor(message) {
        super(message);
        Object.setPrototypeOf(this, MyError.prototype);
    }
}

var myerror = new MyError("ll");
console.log(myerror.message);
console.log(myerror.dump());
console.log(myerror instanceof Error);
console.log(myerror.name);
console.log(myerror.stack);

1
আপনাকে কল করার প্রয়োজন Object.setPrototypeOfমধ্যে MyErrorএছাড়াও কন্সট্রাকটর। stackoverflow.com/a/41102306/186334 github.com/Microsoft/TypeScript-wiki/blob/master/...
CallMeLaNN

10

6 বাবেলের সর্বশেষ পরিবর্তনগুলির সাথে আমি দেখতে পাই যে রূপান্তর-অন্তর্নির্মিত-প্রসারটি আর কাজ করছে না। আমি এই মিশ্র পদ্ধতিটি ব্যবহার করে শেষ করেছি:

export default class MyError {
    constructor (message) {
        this.name = this.constructor.name;
        this.message = message;
        this.stack = (new Error(message)).stack;
    }
}

MyError.prototype = Object.create(Error.prototype);
MyError.prototype.constructor = MyError;

এবং

import MyError from './MyError';

export default class MyChildError extends MyError {
    constructor (message) {
        super(message);
    }
}

ফলস্বরূপ এই সমস্ত পরীক্ষা পাস:

const sut = new MyError('error message');
expect(sut.message).toBe('error message');
expect(sut).toBeInstanceOf(Error);
expect(sut).toBeInstanceOf(MyError);
expect(sut.name).toBe('MyError');
expect(typeof sut.stack).toBe('string');

const sut = new MyChildError('error message');
expect(sut.message).toBe('error message');
expect(sut).toBeInstanceOf(Error);
expect(sut).toBeInstanceOf(MyError);
expect(sut).toBeInstanceOf(MyChildError);
expect(sut.name).toBe('MyChildError');
expect(typeof sut.stack).toBe('string');

6

বরাত দিয়ে

class MyError extends Error {
  constructor(message) {
    super(message);
    this.message = message;
    this.name = 'MyError';
  }
}

কল this.stack = (new Error()).stack;করার জন্য কৌতুক করার দরকার নেই super()

যদিও উপরে কোডের আউটপুট স্ট্যাক ট্রেস যদি না করতে পারেন না this.stack = (new Error()).stack;বা Error.captureStackTrace(this, this.constructor.name);আবাহন করা হয় হট্টগোল । আইএমও, এটি এখানে একটি সমস্যা হতে পারে।

আসলে, স্ট্যাক ট্রেস এই কোড স্নিপেটের অধীনে Chrome consoleএবং আউটপুট হতে পারে Node.js v4.2.1

class MyError extends Error{
        constructor(msg) {
                super(msg);
                this.message = msg;
                this.name = 'MyError';
        }
};

var myerr = new MyError("test");
console.log(myerr.stack);
console.log(myerr);

আউটপুট Chrome console

MyError: test
    at MyError (<anonymous>:3:28)
    at <anonymous>:12:19
    at Object.InjectedScript._evaluateOn (<anonymous>:875:140)
    at Object.InjectedScript._evaluateAndWrap (<anonymous>:808:34)
    at Object.InjectedScript.evaluate (<anonymous>:664:21)

আউটপুট Node.js

MyError: test
    at MyError (/home/bsadmin/test/test.js:5:8)
    at Object.<anonymous> (/home/bsadmin/test/test.js:11:13)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Function.Module.runMain (module.js:467:10)
    at startup (node.js:134:18)
    at node.js:961:3

4

@ জাংউউ উত্তর ছাড়াও, আপনি নিজের ত্রুটিগুলি এভাবে সংজ্ঞায়িত করতে পারেন:

'use strict';

class UserError extends Error {
  constructor(msg) {
    super(msg);
    this.name = this.constructor.name;
  }
}

// define errors
class MyError extends UserError {}
class MyOtherError extends UserError {}

console.log(new MyError instanceof Error); // true

throw new MyError('My message');

যা সঠিক নাম, বার্তা এবং স্ট্যাকট্রেস নিক্ষেপ করবে:

MyError: My message
    at UserError (/Users/honzicek/Projects/api/temp.js:5:10)
    at MyError (/Users/honzicek/Projects/api/temp.js:10:1)
    at Object.<anonymous> (/Users/honzicek/Projects/api/temp.js:14:7)
    at Module._compile (module.js:434:26)
    at Object.Module._extensions..js (module.js:452:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:475:10)
    at startup (node.js:117:18)
    at node.js:951:3

4
এই কাজ করে না: new MyError('foo') instanceof MyError === false
সুকিমা

1
এটা করে Node.js v7.7.3
গুণার গেসনার

2

আমি ES6 এর মাধ্যমে ত্রুটি বাড়ানোর চেষ্টা করছি

সেই class MyError extends Error {…}বাক্য গঠনটি সঠিক।

লক্ষ্য করুন যে ট্রান্সপোর্টারগুলির এখনও বিল্টিন অবজেক্টগুলি থেকে উত্তরাধিকারসূত্রে সমস্যা রয়েছে। তোমার ক্ষেত্রে,

var err = super(m);
Object.assign(this, err);

সমস্যার সমাধান মনে হচ্ছে।


সত্য! তবে বার্তাটি যাইহোক সেট করা নেই - আমি একটি নতুন উদাহরণ লিখব।
কারেল বালেক

আমি এখন উদাহরণটি আবার লিখেছি
কারেল বালেক


"সুপার (মি)" স্পষ্টতই একটি খালি বস্তু ফিরিয়ে দেবে। সুতরাং Object.assign সাহায্য করে না।
কারেল বালেক

@ কারেলব্লেক: আপনি কোন ব্রাউজারটি ব্যবহার করছেন? Error.call()আমার জন্য একটি নতুন ত্রুটি উদাহরণ ফিরে আসে।
বার্গি

2

এই দেওয়া গৃহীত উত্তর আর কাজ করে আপনি সবসময় একটি বিকল্প (যেমন একটি কারখানা ব্যবহার করতে পারে repl ):

function ErrorFactory(name) {
   return class AppError extends Error {
    constructor(message) {
      super(message);
      this.name = name;
      this.message = message; 
      if (typeof Error.captureStackTrace === 'function') {
        Error.captureStackTrace(this, this.constructor);
      } else { 
        this.stack = (new Error(message)).stack; 
      }
    }
  }     
}

// now I can extend
const MyError = ErrorFactory("MyError");


var myerror = new MyError("ll");
console.log(myerror.message);
console.log(myerror instanceof Error);
console.log(myerror.name);
console.log(myerror.stack);


আপনার কাছে প্রয়োজনীয় ব্যাবেল প্লাগইন থাকলে স্বীকৃত উত্তরটি এখনও আমার পক্ষে কাজ করে। যদিও এই উত্তরের জন্য ধন্যবাদ!
কারেল বালেক

2

আমি উপরে বর্ণিত চেয়ে আরও শক্তিশালী বাক্য গঠন পছন্দ করি। ত্রুটির ধরণের অতিরিক্ত পদ্ধতিগুলি আপনাকে সুন্দর console.logবা অন্য কিছু তৈরি করতে সহায়তা করবে ।

export class CustomError extends Error {
    /**
     * @param {string} message
     * @param {number} [code = 0]
     */
    constructor(message, code = 0) {
        super();

        /**
         * @type {string}
         * @readonly
         */
        this.message = message;

        /**
         * @type {number}
         * @readonly
         */
        this.code = code;

        /**
         * @type {string}
         * @readonly
         */
        this.name = this.constructor.name;

        /**
         * @type {string}
         * @readonly
         */
        this.stack = CustomError.createStack(this);
    }

    /**
     * @return {string}
     */
    toString() {
        return this.getPrettyMessage();
    }

    /**
     * @return {string}
     */
    getPrettyMessage() {
        return `${this.message} Code: ${this.code}.`;
    }

    /**
     * @param {CustomError} error
     * @return {string}
     * @private
     */
    static createStack(error) {
        return typeof Error.captureStackTrace === 'function'
            ? Error.captureStackTrace(error, error.constructor)
            : (new Error()).stack;
    }
}

এই কোডটি পরীক্ষা করতে আপনি অনুরূপ কিছু চালাতে পারেন:

try {
    throw new CustomError('Custom error was thrown!');
} catch (e) {
    const message = e.getPrettyMessage();

    console.warn(message);
}

CustomErrorপ্রকারের প্রসারকে স্বাগত জানাই। বর্ধিত প্রকারে কিছু নির্দিষ্ট কার্যকারিতা যুক্ত করা বা বিদ্যমান ওভাররাইড বিদ্যমান। উদাহরণ স্বরূপ.

export class RequestError extends CustomError {
    /**
     * @param {string} message
     * @param {string} requestUrl
     * @param {number} [code = 0]
     */
    constructor(message, requestUrl, code = 0) {
        super(message, code);

        /**
         * @type {string}
         * @readonly
         */
        this.requestUrl = requestUrl;
    }

    /**
     * @return {string}
     */
    getPrettyMessage() {
        const base = super.getPrettyMessage();

        return `${base} Request URL: ${this.requestUrl}.`;
    }
}

1

@ সুকিমার উল্লেখ অনুসারে, আপনি নেটিভ জেএস বাড়িয়ে দিতে পারবেন না। ওপির প্রশ্নের উত্তর দেওয়া যায় না।

মেলবোর্ন 2991 এর উত্তরের অনুরূপ , আমি বরং একটি কারখানা ব্যবহার করেছি, তবে গ্রাহকের ত্রুটির ধরণের জন্য MDN এর প্রস্তাব অনুসরণ করেছি ।

function extendError(className){
  function CustomError(message){
    this.name = className;
    this.message = message;
    this.stack = new Error().stack; // Optional
  }
  CustomError.prototype = Object.create(Error.prototype);
  CustomError.prototype.constructor = CustomError;
  return CustomError;
}

1

এটি আমার পক্ষে কাজ করে:

/**
 * @class AuthorizationError
 * @extends {Error}
 */
export class AuthorizationError extends Error {
    message = 'UNAUTHORIZED';
    name = 'AuthorizationError';
}

0

বাবেল ব্যবহার না করে, তবে সাধারণ ES6 এ নিম্নলিখিতটি আমার পক্ষে ভাল কাজ করেছে বলে মনে হচ্ছে:

class CustomError extends Error {
    constructor(...args) {
        super(...args);
        this.name = this.constructor.name;
    }
}

REPL থেকে পরীক্ষা:

> const ce = new CustomError('foobar');
> ce.name
'CustomError'
> ce.message
'foobar'
> ce instanceof CustomError
true
> ce.stack
'CustomError: foobar\n    at CustomError (repl:3:1)\n ...'

আপনি দেখতে পাচ্ছেন, স্ট্যাকটিতে ত্রুটির নাম এবং বার্তা উভয়ই রয়েছে। আমি নিশ্চিত যে আমি কিছু মিস করছি কিনা তবে আমি নিশ্চিত নই, তবে অন্য সমস্ত উত্তরগুলিতে জিনিসগুলি অতি-জটিল বলে মনে হচ্ছে।


0

আমি @ লাই বেনসনের সমাধানটি এইভাবে কিছুটা উন্নত করেছি:

extendableError.js

class ExtendableError extends Error {
    constructor(message, errorCode) {
        super(message);
        this.name = this.constructor.name;
        this.errorCode = errorCode
        if (typeof Error.captureStackTrace === 'function') {
            Error.captureStackTrace(this, this.constructor);
        } else {
            this.stack = (new Error(message)).stack;
        }
    }


}

export default ExtendableError

একটি ত্রুটির একটি উদাহরণ

import ExtendableError from './ExtendableError'

const AuthorizationErrors = {
    NOT_AUTHORIZED: 401,
    BAD_PROFILE_TYPE: 402,
    ROLE_NOT_ATTRIBUTED: 403
}

class AuthorizationError extends ExtendableError {
    static errors = AuthorizationErrors 
}

export default AuthorizationError 

তারপরে আপনি কিছু নির্দিষ্ট অ্যাপ্লিকেশন নির্দিষ্ট পরিস্থিতিতে আলাদাভাবে কী করবেন তা সিদ্ধান্ত নেওয়ার বিকল্প বিকল্প থাকা অবস্থায় আপনি ত্রুটিগুলি গোষ্ঠী করতে সক্ষম হন

new AuthorizationError ("The user must be a seller to be able to do a discount", AuthorizationError.errors.BAD_PROFILE_TYPE )
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.