জাভাস্ক্রিপ্টে চেষ্টা করে দেখুন ... এটা কি ভাল অভ্যাস নয়?


69

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


2
While in java or *any other language* it is mandatory to have error handling...- আসলে তা না. জাভা, হ্যাঁ, তবে প্রচুর ভাষাগুলি রয়েছে যা চেষ্টা-ধরার জন্য জোর দেয় না (যেমন সি #)।
জিম জি

কারণ আপনি এগুলিকে একটি অ্যাসিঙ্ক পরিবেশে ব্যবহার করতে পারবেন না। আমি এগুলি প্রায়শই একটি নিম্ন বিমূর্ত স্তর দ্বারা সিঙ্ক কোডের মাধ্যমে ব্যবহার করি, উদাহরণস্বরূপ
কোনও কিছুকে কোনও কিছুর

আমি বাজি ধরব যে আপনি ক্লায়েন্ট-সাইড কোডের চেয়ে সার্ভার-সাইড কোডে আরও চেষ্টা করে দেখুন। আপনি যে ক্লাইন্ড সাইড কোডটি গোপনে রেখেছেন সেগুলির বেশিরভাগই গুরুত্বের কিছু করছে না। বেশিরভাগ অ্যাপ্লিকেশন এবং ব্রাউজার-পার্শ্ববর্তী পরিস্থিতিতে - আমি পাইপটি নীচে কেএম কমানোর চেষ্টা করতাম প্রতিটি ত্রুটি থেকে পুনরুদ্ধার করার চেয়ে গুরুত্বপূর্ণ।
এসভিডজেন

সম্ভবত ব্যবহার করার চেষ্টা করার চেষ্টা এড়ানোর আরও একটি উপায় আছে এবং হয় (মনড) আমাদের নোডে একটি ওয়েব স্ক্র্যাপার লিখেছিল। আমরা এটি ব্যবহার করে সমস্ত চেষ্টা করে ফেলতে সক্ষম হয়েছি।
user93

উত্তর:


66

throwঅ্যাপ্লিকেশনগুলির চারপাশে ত্রুটি শর্তগুলি পাস করার উপায় হিসাবে ত্রুটিগুলি এড়ানো উচিত ।

throwবিবৃতি শুধুমাত্র ব্যবহৃত উচিত "এই ঘটতে উচিত, দড়াম এবং পুড়ে। কোন ভাবেই এইরূপ সূচারূভাবে পুনরুদ্ধার না"

try catch তবে হোস্ট অবজেক্টস বা ECMAScript ত্রুটি ফেলতে পারে এমন পরিস্থিতিতে ব্যবহার করা হয়।

উদাহরণ:

var json
try {
    json = JSON.parse(input)
} catch (e) {
    // invalid json input, set to null
    json = null
}

নোড.জেএস সম্প্রদায়ের প্রস্তাবনাগুলি হ'ল আপনি প্রথম যুক্তি হিসাবে কলব্যাকগুলিতে ত্রুটিগুলি পাস করেন (কারণ ত্রুটিগুলি কেবলমাত্র অ্যাসিনক্রোনাস অপারেশনগুলির জন্য ঘটে)

fs.readFile(uri, function (err, fileData) {
    if (err) {
        // handle
        // A. give the error to someone else
        return callback(err)
        // B. recover logic
        return recoverElegantly(err)
        // C. Crash and burn
        throw err
    }
    // success case, handle nicely
})

চেষ্টা / ধরা সত্যিই ব্যয়বহুল এবং এটি কুরুচিপূর্ণ যেমন অন্যান্য সমস্যা রয়েছে এবং এটি কেবল অ্যাসিনক্রোনাস অপারেশনগুলির সাথে কাজ করে না।

সুতরাং যেহেতু সিঙ্ক্রোনাস অপারেশনগুলি ত্রুটি ছুঁড়ে না ফেলে এবং এটি অ্যাসিক্রোনাস অপারেশনগুলির সাথে কাজ করে না, তাই হোস্ট অবজেক্টস বা ECMAScript দ্বারা নিক্ষেপ করা ত্রুটি ব্যতীত কেউই চেষ্টা করে না


2
আমি এতদূর যেতে পারি না যে কেউ কেউ ধরার চেষ্টা করে না, বেশিরভাগ ক্ষেত্রেই এটি কাজের জন্য কেবল ভুল সরঞ্জাম। যখন সত্যই ব্যতিক্রমী পরিস্থিতি থাকে, তখন এটি ফেলে দেওয়া সার্থক হতে পারে Errorতবে সেগুলি খুব কম এবং এর মধ্যে রয়েছে।
zzzzBov

7
@zzzzBov কেস সি, ক্রাশ এবং বার্নের ক্ষেত্রে ত্রুটি নিক্ষেপ করার ক্ষেত্রে কোনও ভুল নেই। আমি কেবল মনে করি না যে আপনার ত্রুটিগুলি ধরা উচিত এবং পুনরুদ্ধার করা উচিত। উদাহরণস্বরূপ document.getElementById, উপাদান উপস্থিত নেই যখন ছুড়ে না, এটি কেবল ফিরে আসে null। প্রায় সব ক্ষেত্রেই একই কাজ করা যায়
রায়নস

4
@ রায়নস, একটি সিঙ্ক ফাংশন থেকে নিক্ষেপ করা সম্পূর্ণ গ্রহণযোগ্য এবং ব্যবহারের ক্ষেত্রে এটি উপলব্ধি করে। কলব্যাকে ত্রুটি ফেরানো হ'ল async হিসাবে নিক্ষেপকারী ত্রুটি সিঙ্ক হয়।
sbartell

@ রায়নোসের ক্লায়েন্ট-সাইডে (নন-নোড এনভায়রনমেন্ট) প্রবাহ নিয়ন্ত্রণের জন্য ত্রুটিগুলি / ব্যতিক্রমগুলি ব্যবহার এড়ানো সম্পর্কে কোনও ভাল পরামর্শ আছে? আমি এই পোস্টটি স্ট্যাকওভারফ্লোতে পেয়েছি , তবে এটি বেশিরভাগ দিকে জাভা
গ্লোবাল

@ বি লম্বা সরল। ত্রুটি কখনও ফেলবেন না। সমস্যা সমাধান.
রায়নস

32

জাভাস্ক্রিপ্টে অ্যাসিক্রোনাস প্রকৃতির কারণে জাভা স্ক্রিপ্টে চেষ্টা / ধরা অন্য ভাষার মতো বুলেট-প্রুফ নয়। এই স্নিপেট বিবেচনা করুন:

try {
    setTimeout(function() {
        do_something_that_throws();
    }, 1000);
}
catch (e) {
    alert("You won't see this!");
}

সমস্যাটি হ'ল কন্ট্রোল tryহওয়ার আগে নিয়ন্ত্রণ প্রবাহটি ব্লকটি ছেড়ে দেয় do_something_that_throws(), তাই কলব্যাকের ভিতরে ফেলে দেওয়া ত্রুটিটি কখনই ধরা যায় না।

সুতরাং চেষ্টা / ধরা মূলত অনেক ক্ষেত্রেই অনুপযুক্ত, এবং কোনও কিছু কোড অযৌক্তিকভাবে কার্যকর করে কিনা তা সর্বদা স্পষ্ট নয়। ভাগ্যক্রমে, জাভাস্ক্রিপ্ট এর অদ্ভুত একক থ্রেডড-অ্যাসিঙ্ক্রোনাস-কলব্যাক আইডিয়াম এবং প্রকৃত বন্ধগুলির জন্য এর সমর্থন সহ একটি দুর্দান্ত বিকল্প সরবরাহ করে: ধারাবাহিকতা-পাসিং শৈলীর ত্রুটি পরিচালনা। কোনও ক্রিয়া হিসাবে কোনও ত্রুটির যথাযথ প্রতিক্রিয়া কেবল পাস করুন, যেমন:

setTimeout(function () {
    do_something_that_calls_err(function(err) {
        alert("Something went wrong, namely this: " + err);
    }),
    1000);

5
এটি অন্য ভাষায় বুলেট প্রুফ নয়। অ্যাসিঙ্ক্রোনাস কলব্যাকগুলি সমর্থন করে এমন কোনও ভাষাতে কোডটি পোর্ট করুন এবং এটি খুব ব্যর্থ হবে।
রায়নস

2
@ রায়নোস: আপনি ঠিক বলেছেন; তবে, অন্যান্য ভাষা (বা তার পরিবর্তে, তাদের সমর্থনকারী সংস্কৃতিগুলি) জাভাস্ক্রিপ্টের মতো এ্যাসিনক্রোনাস-কলব্যাক আইডিয়মগুলিতে এটিকে ভারীভাবে কিনে না এবং বেশিরভাগ অন্যান্য পরিবেশের বহু-থ্রেডযুক্ত প্রকৃতির কারণে চেষ্টা / ধরার কমতিগুলি আরও স্পষ্ট এবং প্রচুর অন্যান্য সতর্কবাণী দ্বারা বেষ্টিত, তাই লোকেরা প্রাকৃতিকভাবে মাল্টি-থ্রেড / অ্যাসিনক্রোনাস কলব্যাক পরিস্থিতিতে সাবধানতার সাথে পদক্ষেপ নেয় এবং সম্ভাব্য ক্ষতির বিষয়ে আরও সচেতন হয়।
টিডামার্স

এটি কি জাভাস্ক্রিপ্টের "অ্যাসিনক্রোনাস প্রকৃতির কারণে"? আমি যতদূর দেখতে পাচ্ছি, চেষ্টা / ক্যাচ তাত্ত্বিকভাবে লেসিকভাবে কাজ করার জন্য তৈরি করা যেতে পারে যেমন শনাক্তকারীরা কীভাবে নিখুঁতভাবে বন্ধ থাকে; এটি কেবল জাভাস্ক্রিপ্টে সেভাবে কাজ করতে হবে না।
ব্রায়ান গর্ডন

2
নোড.জেএস> = 0.8 এ লক্ষ্য করা যায় যে অ্যাসিঙ্ক্রোনালিভাবে চেষ্টা করা / ধরা সম্ভব, দয়া করে আমার প্রশ্নটি দেখুন স্ট্যাকওভারফ্লো
বেনজামিন গ্রুইনবাউম

সিঙ্ক্রোনাস ট্রাই-ক্যাচ করার একমাত্র বিকল্প হ'ল অ্যাসিনক্রোনাস ধারাবাহিকতা শৈলী?
সিএমসিডিগ্রাগনকাই

23

এই উত্তরগুলির অনেকগুলি কিছুটা পুরানো এবং নতুন ES7 বৈশিষ্ট্যগুলি asyncএবং বিবেচনায় নেই await

async/ ব্যবহার করে awaitআপনি এখন নিজের পছন্দ মতো অ্যাসিনক্রোনাস নিয়ন্ত্রণ প্রবাহ পেতে পারেন:

async function email(address) {
  try {
    // Do something asynchronous that may throw...
    await sendEmail({ to: address, from: 'noreply@domain.com`, subject: 'Hello' })
  } catch(err) {
    if (err instanceof SomeCustomError) {
      elegantlyHandleError(err)
    } else {
      throw err
    } 
  }
})

এখানে async/await সম্পর্কে আরও জানুন । আপনি বাবেল ব্যবহার করে async/ awaitএখন ব্যবহার করতে পারেন ।


তবে এটি একটি সিঙ্ক্রোনাস কোডের অনুরূপ
অতুল অগ্রওয়াল

@ অতুলআগ্রাওয়াল হ্যাঁ, এটিই মূল বিষয়। অ্যাসিঙ্ক / অপেক্ষার সাহায্যে আপনাকে একটি সিঙ্ক্রোনাস স্টাইলে অ্যাসিঙ্ক কোডটি লেখার অনুমতি দেয় যাতে আপনি "কলব্যাক হেল্ক" এড়াতে এবং একসাথে প্রচুর প্রতিশ্রুতি জোগাতে পারেন। আমার মতে অ্যাসিঙ্ক কোডটি লেখার এটি খুব উপভোগ্য উপায়
ডানা উডম্যান

সুতরাং জাভাস্ক্রিপ্ট ব্যবহার করে কী লাভ হয় যদি আমরা সিঙ্ক্রোনাসে অ্যাসিঙ্ক কোড তৈরি করি। কারণ বেশিরভাগ মানুষ জাভাস্ক্রিপ্টটি এর অসম প্রকৃতির কারণে ব্যবহার করে
অতুল আগরওয়াল

2
@ অতুলআগ্রাওয়াল আপনি উভয় পৃথিবীর সেরা অর্জন করেছেন - আপনি ভাষার অ্যাসিঙ্ক প্রকৃতি উপভোগ করেন (উপরের কোডটি এখনও অ্যাসিঙ্ক কার্যকর করা হবে - থ্রেড এবং সমস্তটি মুক্ত করে) এবং আরও বেশি প্রোগ্রামার-বান্ধব কোডিং শৈলীর সুবিধাগুলি ছিন্ন করে। যদিও এটি ইস্যু ছাড়াই নয় ...
জেনমাস্টার

15

জাভাস্ক্রিপ্টে চেষ্টা করা ঠিক তেমন বৈধ এবং কার্যকর যে কোনও অন্য ভাষায় যা তাদের প্রয়োগ করে। এটি অন্য ভাষার মতো জাভাস্ক্রিপ্টে তেমন ব্যবহার না করার একটি বড় কারণ রয়েছে। এর একই কারণে জাভাস্ক্রিপ্টকে কুরুচিপূর্ণ স্ক্রিপ্টিং ভাষা হিসাবে দেখা হয়, এর একই কারণ লোকেরা মনে করে জাভাস্ক্রিপ্ট প্রোগ্রামাররা প্রকৃত প্রোগ্রামার নয়:

  • জাভাস্ক্রিপ্ট একটি অবিশ্বাস্যভাবে অ্যাক্সেসযোগ্য এবং বিস্তৃত ভাষা

এত লোক জাভাস্ক্রিপ্টের সংস্পর্শে এসেছে (কেবলমাত্র ব্রাউজারগুলির দ্বারা সমর্থিত একমাত্র সমর্থিত ভাষার কারণে) এর অর্থ এই যে আপনার কাছে প্রচুর অলাভজনক কোড রয়েছে। অবশ্যই অনেকগুলি ছোট ছোট কারণও রয়েছে:

  • জাভাস্ক্রিপ্টের কিছু জিনিস অবিচ্ছিন্ন এবং সুতরাং catchসক্ষম হয় না (অ্যাসিনক্রোনাস স্টাফ)
  • কীভাবে চেষ্টা-ক্যাচ একটি দুর্দান্ত পারফরম্যান্স হিট হয়েছে সে সম্পর্কে অনেক বেশি উচ্ছল আলোচনা হয়েছে। এটা আছে একটি কার্যকারিতা আঘাত একটি বিট , কিন্তু অধিকাংশ কোডের জন্য, এটা ভাল মূল্য।
  • জাভাস্ক্রিপ্টটি এমনভাবে কার্যকর করা হয়েছিল যা প্রায়শই নিঃশব্দে ত্রুটিগুলি উপেক্ষা করে (উদাহরণস্বরূপ স্ট্রিং সংখ্যায় স্বয়ংক্রিয়ভাবে পরিবর্তন হয়)

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


3
এবং কেন আপনি কখনই নীচে নামলেন, ওহ নিঃশব্দে?
ব্যবহারকারী250878

একমত। আমি মনে করি গ্রহণযোগ্য উত্তরটি সাধারণত সত্য, তবে দেশীয় বস্তুগুলির সাথে লেনদেন করার সময় ট্র্যাচ-ক্যাচ ব্যবহার করার এবং এমনকি নিক্ষেপ করার ভাল কারণ রয়েছে। কলব্যাকের পরিবর্তে কোনও ত্রুটি নিক্ষেপ করা হলে, এটি কার্যকর করা বন্ধ করে দেয় এবং হ্যান্ডেলটির চেয়ে স্ট্যাকটিকে প্রথম ব্লকে ঝাঁপিয়ে দেয়। এটি একটি দুর্দান্ত সুবিধা এবং সিঙ্ক্রোনাস অপারেশনগুলির জন্য সঠিক ধারণা দেয়, বিশেষত যদি তারা গভীর বাসা বাঁধে। ব্যতিক্রমগুলি "খারাপ" বলে সুপারিশ করা পাগল বলে মনে হয় (ভাল, স্পষ্ট কারণগুলি ব্যতীত) - এগুলি আসলে একটি অনন্য "শক্তি" সহ একটি খুব দরকারী সরঞ্জাম।
সেমিকোলন

2
আপনি কি কখনও jQuery এর উত্স কোডটি পড়তে সময় নিয়েছিলেন? গ্রহণযোগ্য উত্তরে সেই দৃশ্যের উল্লিখিত চিত্রগুলি বাদ দিয়ে সেখানে খুব কমই চেষ্টা করা যায়: ত্রুটি ছুঁড়ে এমন নেটিভ / হোস্ট অবজেক্টের বৈশিষ্ট্য সনাক্তকরণ এবং ব্যবহার করতে। কোডকে কল করতে যা চেষ্টা করে খুব বেশি ব্যবহার করে না (jQuery এর মতো) 'পেশাদারহীন' মনে হয় নিরীহ বলে মনে হয়। সত্যি কথা বলতে, আমি মনে করি যে এটি জাভা থেকে আগত নতুন জাভাস্ক্রিপ্ট প্রোগ্রামাররা চেষ্টা-ধরার মতো ভাষার বৈশিষ্ট্যগুলিকে অতিরিক্ত ব্যবহার করার প্রবণতা দেখায়।
স্টিজন ডি উইট

6

আমি বিশ্বাস করি যে try..catchজাভাস্ক্রিপ্টে বিরল হওয়ার বেশিরভাগ কারণ ভাষা ত্রুটির জন্য বেশ উচ্চ সহনশীলতা রয়েছে। কোড চেক, ভাল ডিফল্ট এবং অ্যাসিনক্রোনাস ইভেন্ট ব্যবহার করে বেশিরভাগ পরিস্থিতিতে পরিচালনা করা যায়। কিছু ক্ষেত্রে, কেবল একটি প্যাটার্ন ব্যবহার করা সমস্যাগুলি প্রতিরোধ করবে:

function Foo() {
    //this may or may not be called as a constructor!!
    //could accidentally overwrite properties on window
}

function Bar() {
    if (!(this instanceof Bar)) {
        return new Bar();
    }
    //this will only work on Bar objects, and wont impact window
}

অন্যান্য ভাষাগুলির কিছু বড় সমস্যা যা ব্যতিক্রম ঘটায় তা জেএস-তে বিদ্যমান নেই। প্রকারের ingালাই সময়ের প্রয়োজন নেই। পরিবর্তে, পছন্দসই পদ্ধতিটি সাধারণত বৈশিষ্ট্য পরীক্ষা করা হয় (একটি নির্দিষ্ট ইন্টারফেস প্রয়োগ করে):

function doFoo(arg) {
    if (arg.foo) {
        arg.foo();
    } else {
        Bar.prototype.foo.call(arg);
    }
}

ভাষার সাথে async/ যোগ awaitকরার সাথে সাথে try..catchআরও প্রচলিত হয়ে উঠছে। এর অ্যাসিনক্রোনাস রূপ হওয়ার প্রতিশ্রুতি দেয় try..catch, এটি উপলব্ধি করে যে একজনের প্রত্যাশা করা উচিত:

doSomething().then(
  doSomethingWithResult,
  doSomethingWithError
)

পরিবর্তে লিখতে হবে:

try {
  const result = await doSomething()
  doSomethingWithResult(result)
} catch (e) {
  doSomethingWithError(e)
}

3

সম্ভবত জাভাস্ক্রিপ্টে অন্য কারণে চেষ্টা / ধরা খুব বেশি ব্যবহৃত হয় না এটি জাভাস্ক্রিপ্টের প্রথম সংস্করণে কনস্ট্রাক্টটি উপলব্ধ ছিল না ... এটি পরে যুক্ত করা হয়েছিল।

ফলস্বরূপ, কিছু পুরানো ব্রাউজারগুলি এটি সমর্থন করে না। (আসলে, এটি কিছু পুরানো ব্রাউজারগুলিতে একটি পার্সার / সিনট্যাক্স ত্রুটির কারণ হতে পারে, এমন কিছু যা অন্যান্য ধরণের ত্রুটিগুলির তুলনায় "ডিফেন্সিভালি প্রোগ্রাম" করা আরও কঠিন more)

আরও গুরুত্বপূর্ণ, যেহেতু এটি প্রাথমিকভাবে উপলভ্য ছিল না, জাভাস্ক্রিপ্ট বিল্টিন ফাংশনগুলি যা প্রাথমিকভাবে প্রকাশিত হয়েছিল (যেটিকে "বহু ভাষায়" গ্রন্থাগার "ফাংশন বলবে) এটি ব্যবহার করে না। (সামোবজেক্ট থেকে কোনও ত্রুটি "ধরা" খুব কার্যকরভাবে কাজ করে না ome সূচনা () যদি এটি "নিক্ষেপ" না করে তবে পরিবর্তে যখন কোনও সমস্যার মুখোমুখি হয় তখন কেবল "নাল" ফিরিয়ে দেয়))


তবুও অন্য সম্ভাব্য কারণ হ'ল চেষ্টা / ধরার প্রক্রিয়াটি প্রাথমিকভাবে প্রয়োজনীয় বলে মনে হয় নি (এবং এখনও এটি সমস্ত কার্যকর মনে হয় না)। এটি কেবল তখনই প্রয়োজন যখন কলগুলি নিয়মিতভাবে কয়েক স্তরের গভীরভাবে বাসা বাঁধে; কিছু প্রকার ERRNO ফিরিয়ে দেওয়া সরাসরি কলগুলির জন্য দুর্দান্ত কাজ করবে (যদিও এটি যখনই পাওয়া যায় সত্যই এটি কার্যকর করার জন্য, বেশিরভাগ ভাষায় সেরা অভ্যাসটি কেবল গভীরভাবে নেস্টেড কলগুলির পরিবর্তে সর্বত্র এটি ব্যবহার করা )। যেহেতু জাভাস্ক্রিপ্ট যুক্তিটি প্রাথমিকভাবে ছোট এবং সাধারণ হিসাবে প্রত্যাশিত ছিল (সর্বোপরি, এটি কেবল কোনও ওয়েবপৃষ্ঠার সাথে সংযুক্ত :-), ফাংশন কলগুলি গভীরভাবে বাসা বেঁধে দেওয়া হবে বলে আশা করা যায়নি, এবং তাই চেষ্টা / ক্যাপচার প্রক্রিয়াটি প্রয়োজনীয় বলে মনে হয় নি।


3
না না না, একেবারেই নয়। পুরানো ইঞ্জিনগুলি দীর্ঘ সময়ের জন্য আর কোন গুরুত্ব দেয় না এবং জাভাস্ক্রিপ্ট সম্প্রদায় সাধারণভাবে জায়েজ হওয়ার সাথে সাথে পুরানো জিনিসগুলি ফেলে দেয়। আমি এমনকি বাজি ধরব যে এখন বেশিরভাগ জাভাস্ক্রিপ্ট বিকাশকারীই আই -6 পরবর্তী পোস্ট।
ক্যামিলো মার্টিন 21

0

আমি বিশ্বাস করি যে এগুলি এত বেশি ব্যবহৃত হয় না কারণ জাভাস্ক্রিপ্ট ক্লায়েন্ট সাইড কোডে ব্যতিক্রম ছুঁড়ে দেওয়া একটি পৃষ্ঠা ডিবাগ করা আরও কঠিন করে তোলে।

ব্যতিক্রম ছোঁড়ার পরিবর্তে আমি সাধারণত একটি সতর্কতা বাক্স প্রদর্শন করতে পছন্দ করি (যেমন alert("Error, invalid...");)

এটি অদ্ভুত শোনাতে পারে তবে জাভাস্ক্রিপ্টের ত্রুটিগুলি ক্লায়েন্টের পক্ষেই ঘটতে পারে, যদি কোনও গ্রাহক আপনার নির্মিত কোনও পৃষ্ঠা ব্যবহার করে থাকেন এবং পৃষ্ঠাটি একটি ব্যতিক্রম ছুঁড়ে দেয়, যদি না গ্রাহক প্রযুক্তি-জ্ঞান-কোডার না থাকে তবে সে কখনও বলতে সক্ষম হবে না unless আপনি সমস্যা কি।

তিনি কেবল আপনাকে এই বলে ডাকবেন: "আরে, পৃষ্ঠা এক্স কাজ করে না!" এবং তারপরে এটি কী ভুল হয়েছে এবং কোডটি কোথায় তা খুঁজে বের করা আপনার পক্ষে হবে।

পরিবর্তে সতর্কতা বাক্স ব্যবহার করার মাধ্যমে এটি আরও সম্ভাব্য যে তিনি কল করেছেন এবং এর মতো কিছু বলেছেন: "আরে, আমি যখন পৃষ্ঠার এক্স এর বোতামে ক্লিক করি তখন এটি একটি বাক্স দেখায় যা বলে ..." , বিশ্বাস করুন, এটি খুঁজে পাওয়া আরও সহজ হবে পোকাটি.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.