প্রোগ্রামিং ভাষাগুলিতে ত্রুটিগুলি কেন "ব্যতিক্রম" নামে অভিহিত করা হয়েছে তবে "ত্রুটি" হিসাবে নয়?


45

আমি আসলে এটি সম্পর্কে বেশ কিছুদিন ধরে ভাবছিলাম। আমি নিজে নেটিভ ইংলিশ স্পিকার নই তবে এখনও আমার বহু বছরের প্রোগ্রামিং অভিজ্ঞতা রয়েছে এবং আমি সবসময় আমাকে এটি জিজ্ঞাসা করি। এটিকে ত্রুটিযুক্ত হওয়ার কারণে এটি ব্যতিক্রম হিসাবে নামকরণ করা হলেও ত্রুটি নয়।

এটি PageNotFoundErrorপরিবর্তে হতে পারে PageNotFoundException


41
সমস্ত ব্যতিক্রমী পরিস্থিতি ত্রুটি নয়।
অ্যান্ড্রু টি ফিনেল

15
গাড়িটি গড়িয়ে ফেলা এবং গাড়ি ক্রাশ করার মধ্যে পার্থক্য।
বিশ্ব প্রকৌশলী

6
আপনি কি নির্দিষ্ট ব্যতিক্রম শ্রেণির নামকরণের কথা বলছেন? তারপরে নোট করুন যে কিছু বাস্তুতন্ত্রে এগুলি বলা হয় XYError- উদাহরণস্বরূপ পাইথনে।

6
মনে মনে, জাভাতে একটি ত্রুটি শ্রেণি রয়েছে যা থ্রোয়েবল থেকে উত্তরাধিকার সূত্রে প্রাপ্ত। আরও তথ্যের জন্য ডকস.ওরাকল . com/javase/1.4.2/docs/api/java/lang/Error.html দেখুন । আপনি "সরাসরি জ্ঞাত সাবক্লাস" বিভাগটিও পরীক্ষা করতে পছন্দ করতে পারেন।
লুস্কুবাল

আমি বলতে চাই যে এই ধাঁধাটির ইংরেজির সাথে কোনও সম্পর্ক নেই। আপনি যে কোনও দক্ষ ভাষায় যে ভাষাতে দক্ষ হতে বেছে নিয়েছেন তা এটি আরও লজিক্যাল শ্রেণিবদ্ধকরণ।
אבישגנת

উত্তর:


59

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

এমনকি একটি নাল পয়েন্টার ব্যতিক্রম আপনার পক্ষে খুব বেশি অর্থ বহন করে না। আপনি অন্য কারও কোডটি কল করেন এবং তারপরে একটি নাল পয়েন্টার ব্যতিক্রম ধরা পড়েন কারণ আপনি জানেন যে এটি ফুঁপিয়ে উঠা, কোন দোষটি এটির বার্তা প্রিন্ট করার পক্ষে এবং আপনার কাজটি চালিয়ে যাওয়ার পক্ষে উপযুক্ত।


27
যদিও নিয়ন্ত্রণ প্রবাহ হিসাবে ব্যতিক্রম প্রক্রিয়াগুলির ব্যবহার বিভ্রান্তিকর হতে পারে এবং আমি মনে করি যে এটি সাধারণত অস্বীকার করা হয়েছে।
কেওসপ্যান্ডিয়ন

11
@ চাওসপ্যান্ডিয়ন: ভাষা / সংস্কৃতি নির্ভর করে।
আমারা

11
@ ডকব্রাউন: আমি একবার সুডোকু সলভার লিখেছিলাম যে এটি পুনরাবৃত্ত অনুসন্ধান করতে পারে যা বর্তমান প্রচেষ্টাতে সমাধানটি খুঁজে পেতে ব্যর্থ হয় এবং ভিন্ন মূল্য দিয়ে চেষ্টা করে ব্যাকট্র্যাক করে; এবং যখন কোনও সমাধান পাওয়া যায়, এটি সমাধান সহ একটি ব্যতিক্রম ছুঁড়ে দেয়। এখানে সমস্যা ব্যর্থতা হ'ল "স্বাভাবিক" পরিস্থিতি এবং সাফল্য একটি "ব্যতিক্রমী" পরিস্থিতি; এবং যেহেতু সলভারটিতে এটি নিজে কল করে সেখানে একাধিক পয়েন্ট রয়েছে, ব্যতিক্রম ব্যবহার না করে আপনাকে কলটি কোনও সফল অনুসন্ধান থেকে ফিরে আসছে কিনা বা ব্যর্থ অনুসন্ধান থেকে ফিরে এসেছে কিনা তা পরীক্ষা করার জন্য প্রচুর বয়লারপ্লেট লিখতে হবে।
মিথ্যা রায়ান

5
@ ফ্যালকন: হ্যাঁ আপনি কেবল একটি 'সমাপ্ত' মানটি ফিরিয়ে দিতে পারবেন, এর অর্থ প্রতিবার যখন আপনি পুনরাবৃত্তি করবেন তখন আপনাকে করতে হবে: for (...) { if (func() == finished) { return finished; } else { itfailedsocheckanother(); }}তবে কোডটি যেখানে ফানক () পুনরাবৃত্তি করছে সেখানে একাধিক পয়েন্ট রয়েছে তা বিবেচনা করে, আপনি যতবার পুনরাবৃত্তি যোগ করবেন ততবার ব্যতিক্রম-কম সমাধানটি কৃপণ হয়ে ওঠে। এটাকেই আমি একটি কার্গো-কাল্ট প্রোগ্রামিং বলি, এটি মূলত এমন একটি ভাষাতে ব্যতিক্রমগুলির অনুকরণ করে যা ইতিমধ্যে একটি রয়েছে কারণ সংস্কৃতি নেতা বলে "আপনার ব্যতিক্রমগুলি ব্যবহার করবেন না"।
মিথ্যা রায়ান

8
@ ফ্যালকন: আহ ... স্টকটি "গোটোর মতো দেখাচ্ছে" যুক্তি, যে যুক্তিগুলি আপনাকে লুপ ব্যবহার করবেন না বা বিবৃতি বা ফাংশন কল দিলে কাজ করে না, কারণ "এগুলি সমস্তই গোটসের মতো দেখাচ্ছে"। ব্যতিক্রম সহ সাফল্য ফিরিয়ে দেওয়া যদি কেবল ত্রুটির সাথে ব্যতিক্রমকে সংযুক্ত করে থাকেন তবে কেবলমাত্র ডব্লিউটিএফ। আমার জন্য, যখন এই পদ্ধতিতে ব্যবহৃত হয়, তখন চেষ্টা-ধরার ব্লকটি "দীর্ঘ যাত্রা শেষে এখানে ফিরে আসার প্রতিশ্রুতি" এর মতো, চেষ্টা-বাদ দিয়ে + থ্রো-এর আচরণটি ফাংশন-কল + রিটার্নের সাথে একেবারে অনুরূপ, এটি ব্যতীত আপনি দীর্ঘস্থায়ী ভ্রমণগুলি যখন আপনি সমাধানের সন্ধান শেষ করতে পারেন তখন খুব গভীর কল স্ট্যাক জড়িত থাকতে পারে।
মিথ্যা রায়ান

21

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

কিছু প্রোগ্রামিং পরিবেশে যেমন জাভাতে, Error"সত্য ত্রুটি" প্রতিবেদন করার জন্য বিশেষ বিষয় সরবরাহ করা হয়, এমন পরিস্থিতিতে যে যুক্তিসঙ্গত প্রয়োগ হ্যান্ডেল করার চেষ্টা করা উচিত নয়। এই অবজেক্টগুলি একই পদ্ধতি ব্যবহার করে বিতরণ করা হয় যা ব্যতিক্রম বিতরণ করার জন্য ব্যবহৃত হয়, তবে তাদের অপরিবর্তনযোগ্য পরিস্থিতিতে সিগন্যালের একটি বিশেষ অর্থ রয়েছে।


6

এর উত্স সম্পর্কে আমার কোনও ব্যুৎপত্তি সংক্রান্ত গবেষণা নেই, তবে আমি বুঝতে পারি যে "ত্রুটি" শব্দটি ব্যবহার করা সমস্ত পরিস্থিতিতে সুনির্দিষ্ট নাও হতে পারে; এছাড়াও প্রায় শেয়ারপয়েন্টমাস্টার হিসাবে উল্লেখ করা হয়েছে, ত্রুটি এবং পৃথক পৃথক সংস্থা হিসাবে ছুঁড়ে দেওয়া ব্যতিক্রম সম্পর্কে ভাবা ভাল।

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

"ব্যতিক্রম" শব্দটি আমি প্রথমবার দেখেছিলাম 80386 বিধানসভা ম্যানুয়ালটিতে। আমার মনে আছে আমি যখন দেখেছিলাম তখন তা আমার কাছে তাত্ক্ষণিকভাবে প্রাকৃতিক লাগছিল। এটির জন্য যে ত্রুটিটি সঠিক হবে না, কারণ সমাবেশে কোনও ত্রুটি নেই; প্রসেসরটি কেবলমাত্র শর্তাদিই মোকাবেলা করতে পারে না (যদি এটি কোনও ত্রুটি হয় - প্রোগ্রামার, ব্যবহারকারী বা সিস্টেমের কাছ থেকে - ভাল, প্রসেসর সম্পূর্ণরূপে অজ্ঞেয়বাদী)। আমি জানি না ইন্টেল আসলেই এই শব্দটির উদ্ভব করেছিল কিনা, তবে সম্ভবত ...


3

সাধারণত ব্যতিক্রম একটি ইভেন্টের নাম ব্যবহার করতে ব্যবহৃত হয় যা সঠিক নয় তবে এটি পুনরুদ্ধার করা যেতে পারে যেমন out_of_rangeসি ++ এর ব্যতিক্রম, যা কোনও ভেক্টর বা অ্যারেতে থাকা কোনও উপাদান অ্যাক্সেস করার সময় নিক্ষিপ্ত হয়। স্পষ্টতই এই জাতীয় ঘটনাটি সঠিক নয়, তবে এটি হওয়ার অর্থ আপনার পুরো প্রোগ্রাম ক্রাশ হওয়ার কথা নয়।

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


3

আমি মনে করি এটির ত্রুটি পরিচালনার "বিবর্তন" এর সাথে আরও কিছু করার আছে। সি / সি ++ (ব্যতিক্রম হ্যান্ডলিং যুক্ত হওয়ার আগে) ভাষার সাথে, যদি কোনও ফাংশন ব্যর্থ হয়, তবে কেবলমাত্র একমাত্র উপায়টি ছিল রিটার্ন মান (যেমন HRESULTউইন 32) এর মাধ্যমে। সুতরাং সাধারণত আপনি প্রতিটি ফাংশন কলের প্রস্থান কোডগুলি ধরা শেষ করে একটি চেক করেন। এই পদ্ধতির কোড বার্তাবহ করে তোলে। এবং অনেক সময় বিকাশকারীরা অলসতার বাইরে এই চেকগুলি যুক্ত করা এড়াতে পারবেন।

ব্যতিক্রম হ্যান্ডলিংয়ের প্রবর্তনের সাথে সাথে বিকাশকারীদের কাছে ত্রুটি বাড়াতে এখন দুটি বিকল্প ছিল । সুতরাং "ব্যতিক্রম" শব্দটি "প্রস্থান স্থিতি" ত্রুটিগুলি থেকে ত্রুটিগুলি আলাদা করতে ব্যবহৃত হয়েছিল। সময়ের পরে, ব্যতিক্রম হ্যান্ডলিং ত্রুটিগুলি প্রচারের একটি জনপ্রিয় উপায়ে পরিণত হয়েছে কারণ কোডটি পড়া, বজায় রাখা খুব সহজ এবং কোনও একক জায়গা থাকতে পারে যেখানে আপনার ত্রুটি পরিচালনা করার ক্ষেত্রে ত্রুটি থাকতে পারে।


2

পাইথনগুলিতে তাদের নাম ABCError Eg: KeyError, IndexError হিসাবে রাখা হয়েছে

http://docs.python.org/library/exceptions.html

সুতরাং আমি মনে করি এটি আপনি যে ভাষা ব্যবহার করেন তার উপর নির্ভর করে।


4
ভিসি ভুলে যাবেন না (ক্লাসিক, না। নেট)। অন ​​ত্রুটি গোটো ব্যবহৃত হয়েছিল। এবং সর্বকালের সবচেয়ে আশ্চর্যজনক আবিষ্কার "অন ত্রুটি পুনরায় শুরু করুন পরবর্তী"
কিব্বি

1
পাইথনে, ত্রুটিগুলি ব্যতিক্রমগুলির একটি উপসেট। এখানে চারটি স্ট্যান্ডার্ড ব্যতিক্রম রয়েছে যা ব্যতিক্রম থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় তবে স্ট্যান্ডার্ডেরর থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় না: স্টপআইট্রেশন, জেনারেটর এক্সিট, কীবোর্ড ইন্টারটার্ট এবং সিস্টেমএক্সিট।
ডার্ক হোলসোপল

1

কোনও ত্রুটি দেখা দিলে সিস্টেম বা বর্তমানে সম্পাদনকারী অ্যাপ্লিকেশন ত্রুটি সম্পর্কিত তথ্য সহ একটি ব্যতিক্রম ছুঁড়ে ফেলে রিপোর্ট করে। একবার নিক্ষেপ করা হলে, একটি ব্যতিক্রম অ্যাপ্লিকেশন বা ডিফল্ট ব্যতিক্রম হ্যান্ডলার দ্বারা পরিচালিত হয়।

একটি ত্রুটি একটি ব্যতিক্রম ছুঁড়েছে যা ত্রুটিটির বিশদটি বর্ণনা করে, তাই সবকিছুই একটি ত্রুটি নয় যা যদি বোধ হয় তবে এটি ব্যতিক্রম হয় exception), উদাহরণস্বরূপ, অস্তিত্বহীন কোনও ভুল হওয়া উচিত নয় তবে একটি ব্যতিক্রম ছুঁড়ে দেওয়া উচিত।

http://msdn.microsoft.com/en-us/library/system.exception.aspx


0

আইওএস / ম্যাক প্রোগ্রামিংয়ে আমাদের একক ভাষায় ব্যতিক্রম এবং ত্রুটি উভয়ই রয়েছে।

কমপক্ষে সেই পরিবেশে একটি ব্যতিক্রম "অ-পুনরুদ্ধারযোগ্য", যখন একটি ত্রুটি "পুনরুদ্ধারযোগ্য"।

উদাহরণ স্বরূপ:

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

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


2
ঠিক আছে, ব্যতিক্রম এবং ত্রুটিগুলি তখন অন্য বিকাশকারীদের বোঝানো থেকে সম্পূর্ণ আলাদা!
তারিক

আমার ধারণা প্রতিটি ভাষা আলাদা is উদ্দেশ্যমূলক-সি / কোকো সক্রিয় ব্যবহারে প্রাচীনতম ভাষাগুলির মধ্যে একটি (1983 সালের কাছাকাছি থেকে), তাই সম্ভবত এটি কিছুটা পুরানো ed তবুও, যদি সংজ্ঞাটি একটি সম্প্রদায় থেকে অন্য সম্প্রদায়ে পরিবর্তিত হয় তবে তা জানা গুরুত্বপূর্ণ।
অভি বেকার্ট

0

একটি ত্রুটি এমন কিছু যা প্রোগ্রামটি কার্যকর করার ক্ষেত্রে ভুল হয়েছে। প্রায়শই এটি ব্যতিক্রম উত্থাপন দ্বারা মোকাবেলা করা হয় , কিন্তু

  • এমন কোনও কিছুই নেই যা কোনও প্রোগ্রামারকে একটি ব্যতিক্রম উত্থাপন করে ত্রুটি পরিচালনা করতে বাধ্য করে এবং
  • এমন কোনও কিছুই নেই যা কোনও প্রোগ্রামারকে কেবল ত্রুটির ক্ষেত্রে ব্যতিক্রম বাড়াতে বাধ্য করে।

ত্রুটি একটি শব্দার্থক ধারণা: এটি প্রোগ্রামার বা ব্যবহারকারী দ্বারা প্রয়োগ করা হয়, যারা প্রত্যাশা নিয়ে প্রোগ্রামে আসে, তাদের প্রত্যাশা এবং বাস্তবতার মধ্যে পার্থক্য বর্ণনা করার জন্য describe রুটিন ত্রুটিযুক্ত অবস্থায় আছে কিনা তা কেবল একজন ব্যক্তিই বলতে পারবেন।

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


0

ব্যতিক্রম এবং ত্রুটি আলাদা are

ব্যতিক্রমগুলি এমন একটি পরিস্থিতি যা কোনও প্রোগ্রাম কাটিয়ে উঠতে পারে, যেমন ধরুন যে আপনি কোনও ফাইল খোলার চেষ্টা করেছেন এবং এটি বিদ্যমান নেই, ত্রুটি এমন একটি পরিস্থিতি যখন কোনও প্রোগ্রাম ডিস্ক ব্যর্থতা বা র‌্যাম ব্যর্থতার মতো কিছুই করতে পারে না।


0

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

সুতরাং আপনার প্রশ্নের উত্তর হ'ল: এটি প্রসঙ্গ এবং দৃষ্টিভঙ্গির উপর নির্ভর করে।


0

ব্যতিক্রমগুলি ত্রুটির সাধারণীকরণ হিসাবে বিকশিত হয়েছিল। একটি ব্যতিক্রম প্রক্রিয়া অন্তর্ভুক্ত করা প্রথম প্রোগ্রামিং ভাষা 1970 এর দশকে পাতার মর্মর ছিল। গ্যাব্রিয়েল এবং স্টিলের ভাষা বিবর্তনের প্যাটার্নটিতে একটি ভাল সংক্ষিপ্তসার রয়েছে। ব্যতিক্রমগুলি (যাদের এখনও ব্যতিক্রম বলা হয়নি) কোনও ত্রুটি দেখা দিলে কোনও প্রোগ্রামের আচরণ নির্দিষ্ট করার প্রয়োজন থেকে উদ্ভূত হয়েছিল। একটি সম্ভাবনা হ'ল প্রোগ্রামটি থামানো, তবে এটি সর্বদা সহায়ক নয়। লিস্প প্রয়োগগুলি traditionতিহ্যগতভাবে একটি ত্রুটিতে ডিবাগারে প্রবেশের একটি উপায় ছিল, তবে কখনও কখনও প্রোগ্রামাররা তাদের প্রোগ্রামে ত্রুটি পরিচালনার অন্তর্ভুক্ত করতে চেয়েছিল। সুতরাং 1960 এর দশকের লিস্প বাস্তবায়নের বলার একটি উপায় ছিল "এটি করুন, এবং যদি কোনও ত্রুটি দেখা দেয় তবে পরিবর্তে তা করুন"। মূলত ত্রুটিগুলি আদিম ফাংশন থেকে এসেছিল তবে প্রোগ্রামাররা প্রোগ্রামটির কিছু অংশ এড়াতে এবং ত্রুটি হ্যান্ডলারের দিকে ঝাঁপিয়ে যাওয়ার জন্য ইচ্ছাকৃতভাবে ত্রুটিটি ট্রিগার করা সুবিধাজনক বলে মনে করেছিল।

1972 সালে, লিস্পে ব্যতিক্রম হ্যান্ডলিংয়ের আধুনিক রূপটি ম্যাকলিস্পে হাজির হয়েছিল: throwএবং catchসফটওয়্যার সংরক্ষণ গ্রুপের সহ গোড়ার দিকে পাতার মর্মর বাস্তবায়নের উপর উপাদান অনেক তালিকাবদ্ধ করে ডেভিড চন্দ্র দ্বারা MACLISP রেফারেন্স ম্যানুয়াল পরিবর্ধন ও পরিবর্তন 0 । প্রিমিটিভের catchএবং throw§5.3 p.43 মধ্যে নথিভুক্ত করা হয়।

catchকাঠামোগত অ-স্থানীয় প্রস্থান করার জন্য LISP ফাংশন। (catch x)মূল্যায়ন xএবং এর মানগুলি প্রদান করে, ব্যতীত যদি মূল্যায়নের সময় মূল্যায়ন করা x (throw y)উচিত, catchতাত্ক্ষণিকভাবে yআরও মূল্যায়ন না করে ফিরে আসে x

catchকোনও ইকন্ড আর্গুমেন্টের সাথেও ব্যবহার করা যেতে পারে, মূল্যায়ন করা হয়নি, যা নেস্টেড ক্যাচগুলির মধ্যে পার্থক্য করার জন্য ট্যাগ হিসাবে ব্যবহৃত হয়। (...)

throwcatchএকটি কাঠামোগত ননলোকাল প্রস্থান ব্যবস্থার হিসাবে ব্যবহার করা হয় ।

(throw x)মূল্যায়ন করে xএবং মানটিকে সাম্প্রতিকতমটিতে ফেলে দেয় catch

(throw x <tag>)xসবচেয়ে সাম্প্রতিক catchলেবেলযুক্ত <tag>বা লেবেলবিহীন লেবেলে ফিরে ফিরে মান rows

ফোকাস ননলোকাল নিয়ন্ত্রণ প্রবাহের উপর। এটা তোলে (একটি উর্ধ্বগামী শুধুমাত্র এতে যান) এতে যান একটি ফর্ম, যা একটি বলা হয় লাফ । রূপকটি হ'ল প্রোগ্রামটির একটি অংশ ব্যতিক্রম হ্যান্ডলারের কাছে ফিরে যেতে মান নিক্ষেপ করে এবং ব্যতিক্রম হ্যান্ডলার সেই মানটি ধরে এবং এটি ফেরত দেয়।

বেশিরভাগ প্রোগ্রামিং ভাষা আজ একটি ব্যতিক্রম বস্তুতে ট্যাগ এবং মানটি প্যাক করে এবং একটি হ্যান্ডলিং প্রক্রিয়াটির সাথে ধরা পদ্ধতিটিকে একত্রিত করে।

ব্যতিক্রমগুলি অবশ্যই ত্রুটি নয়। এগুলি কোডের ব্লক এবং আশেপাশের ব্লকগুলি থেকে বেরিয়ে আসার উপায়, ব্যতিক্রমটির জন্য কোনও হ্যান্ডলার পৌঁছানো অবধি পালিয়ে যায়। স্বজ্ঞাত অর্থে এ জাতীয় বিষয়টিকে একটি "ত্রুটি" হিসাবে বিবেচনা করা হবে কিনা তা বিষয়ভিত্তিক।

কিছু ভাষা "ত্রুটি" এবং "ব্যতিক্রম" পদগুলির মধ্যে পার্থক্য তৈরি করে। উদাহরণস্বরূপ, কিছু লিস্প উপভাষার উভয়ই throwএকটি ব্যতিক্রম বাড়াতে হবে (ব্যবহারকারীদের জন্য নিয়ন্ত্রণ প্রবাহ, এমন কোনও উপায়ে স্থানীয়-বহির্গমন প্রস্থান করা বোঝায় যা কিছুতেই ভুল হয়েছে না এমনটি নির্দেশ করে না) এবং signalত্রুটি বাড়াতে (যা নির্দেশ করে যে কিছু "ভুল" হয়েছে এবং একটি ডিবাগ ইভেন্ট ট্রিগার করতে পারে)।


-1

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


-1

একটি ত্রুটি সর্বদা একটি ত্রুটি। একটি ব্যতিক্রম বর্তমান প্রসঙ্গে একটি ত্রুটি। যে, একটি ব্যতিক্রম প্রসঙ্গ সংবেদনশীল। একটি ব্যতিক্রম উদাহরণ একটি ascii "একটি" একটি পূর্ণসংখ্যা "1" যোগ করা হবে। একটি ত্রুটি "+" এর মতো অপরিজ্ঞাত অপারেটর ব্যবহার করার মতো কিছু হতে পারে! বেশিরভাগ ভাষায়।

কিছু ল্যাঙ্গুয়েজ আপনাকে পরিস্থিতি থেকে বেরিয়ে আসার পথটি নির্ধারণ করতে দেয় যদি এটি যদি আপনি যা করতে চান তা সত্যিই।

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