আমি কীভাবে অবৈধ ব্যবহারকারী ইনপুট পরিচালনা করব?


12

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

আমি প্রোগ্রামিং একটি খুব রক্ষণাত্মক শৈলী আছে ঝোঁক। আমার সাধারণ ব্লক বা পদ্ধতিটি দেখতে এমন দেখাচ্ছে:

T foo(par1, par2, par3, ...)
{
    // Check that all parameters are correct, return undefined (null)
    // or throw exception if this is not the case.

    // Compute and (possibly) return result.
}

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

এটিকে আরও বিমূর্তভাবে বলতে গেলে আমার পন্থাটি

if all input is OK --> compute result
else               --> do not compute result, notify problem

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

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

সংক্ষেপিত

ভুল ইনপুট পরিচালনা করার জন্য দুটি পদ্ধতির মধ্যে কোনটি আপনাকে পরামর্শ দেবে?

Inconsistent input --> no action + notification

অথবা

Inconsistent input --> undefined behaviour or crash

সম্পাদন করা

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

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

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


সর্বদা রক্ষণাত্মকভাবে কোড করুন। শেষ পর্যন্ত, কার্য সম্পাদনের কারণে, আপনি রিলিজ মোডে কিছু পরীক্ষা অক্ষম করতে একটি স্যুইচ রাখতে পারেন।
ডেডালনিক্স

আজ আমি অনুপস্থিত NULL পয়েন্টার চেক সম্পর্কিত একটি বাগ ঠিক করেছি। অ্যাপ্লিকেশন লগ আউট করার সময় কিছু অবজেক্ট তৈরি হয়েছিল এবং কনস্ট্রাক্টর আরও কিছু বস্তু অ্যাক্সেস করার জন্য একটি গেটর ব্যবহার করেছিলেন যা সেখানে আর ছিল না। অবজেক্টটি সেই মুহুর্তে তৈরি হওয়ার কথা নয়। এটি অন্য বাগের কারণে তৈরি হয়েছিল: লগ আউট করার সময় কিছু টাইমার থামানো হয়নি -> একটি সংকেত প্রেরণ করা হয়েছিল -> প্রাপক একটি বস্তু তৈরি করার চেষ্টা করেছিলেন -> নির্মাণকারী অনুসন্ধান করেছিলেন এবং অন্য একটি বস্তু ব্যবহার করেছেন -> নুল পয়েন্টার -> ক্র্যাশ sh )। আমি সত্যিই পছন্দ করতে চাই না যে এই জাতীয় বাজে পরিস্থিতি আমার অ্যাপ্লিকেশনটিকে ক্র্যাশ করে ras
জর্জিও

1
মেরামত করার নিয়ম: যখন আপনাকে অবশ্যই ব্যর্থ হতে হবে, শীঘ্রই এবং যত তাড়াতাড়ি সম্ভব ব্যর্থ।
ডেডালনিক্স

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

উত্তর:


8

আপনি এটি ঠিক আছে। বেহাল হতে। অন্য কোডকে বিশ্বাস করবেন না, এমনকি এটি নিজের কোড। আপনি জিনিসগুলি ভুলে যান, আপনি পরিবর্তন করেন, কোড বিকশিত হয়। বাইরের কোড বিশ্বাস করবেন না।

উপরে একটি ভাল পয়েন্ট তৈরি করা হয়েছিল: ইনপুটগুলি অবৈধ হলেও প্রোগ্রামটি ক্রাশ না হলে কী হবে? তারপরে আপনি ডাটাবেজে আবর্জনা পেয়েছেন এবং লাইনটিতে ত্রুটি রয়েছে।

যখন কোনও সংখ্যার জন্য জিজ্ঞাসা করা হয় (উদাহরণস্বরূপ ডলারের দাম বা ইউনিট সংখ্যা) আমি "1e9" লিখতে এবং কোডটি কী করে তা দেখতে পছন্দ করি। এটা ঘটতে পারে।

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


হ্যাঁ, আইএমএইচও এটি এমন কয়েকটি পরিস্থিতিতে একটি যার মধ্যে ভৌতিক বিষয় হওয়া একটি বৈশিষ্ট্য এবং সমস্যা নয়।
জর্জিও

"যদি ইনপুটগুলি অবৈধ হয় তবে প্রোগ্রামটি ক্র্যাশ না হয় তবে কী হবে? তারপরে আপনি ডাটাবেজে আবর্জনা পেতে এবং লাইনে ত্রুটিগুলি পেয়ে যান।": প্রোগ্রামটি ক্র্যাশ করার পরিবর্তে অপারেশনটি সম্পাদন করতে অস্বীকার করতে পারে এবং একটি অপরিবর্তিত ফলাফল ফিরে আসতে পারে। অপরিজ্ঞাত গণনার মাধ্যমে প্রচার করবে এবং কোনও আবর্জনা তৈরি হবে না। তবে এটি অর্জনের জন্য প্রোগ্রামটির ক্র্যাশ হওয়ার দরকার নেই।
জর্জিও

হ্যাঁ, তবে - আমার বক্তব্যটি হ'ল প্রোগ্রামটি অবশ্যই অবৈধ ইনপুটটি সনাক্ত করতে পারে এবং এটি সহ্য করতে পারে। যদি ইনপুটটি চেক করা না থাকে তবে এটি সিস্টেমে প্রবেশের উপায় এবং খারাপ জিনিসগুলি পরে আসবে। এমনকি ক্র্যাশিং এর চেয়ে ভাল!
অ্যান্ডি ক্যানফিল্ড

আমি আপনার সাথে পুরোপুরি একমত: ইনপুট ডেটা সঠিক কিনা তা নিশ্চিত করার জন্য আমার সাধারণ পদ্ধতি বা ফাংশনটি চেকের ক্রম দিয়ে শুরু হয়।
জর্জিও

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

7

আপনার ইতিমধ্যে সঠিক ধারণা আছে

ভুল ইনপুট পরিচালনা করার জন্য দুটি পদ্ধতির মধ্যে কোনটি আপনাকে পরামর্শ দেবে?

বেমানান ইনপুট -> কোনও ক্রিয়া + বিজ্ঞপ্তি নেই

বা আরও ভাল

বেমানান ইনপুট -> যথাযথভাবে পরিচালিত ক্রিয়া

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

প্রগতিবাদ সহ মেজাজী মতবাদ pra

স্টিভ ম্যাককনেল এটি সেরা বলেছিলেন

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

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


2
জনসাধারণের পরিবর্তে, আমি পরামর্শ দেব, সমস্ত বেসরকারী পদ্ধতি সুরক্ষিত, ভাগ করা বা অ্যাক্সেস সীমাবদ্ধতার কোনও ধারণাই নেই (সমস্ত কিছু প্রকাশ্য, স্পষ্টতই) এমন ভাষাগুলি সুরক্ষিতভাবে কভার করতে।
জাস্টিনসি

3

এখানে কোনও "সঠিক" উত্তর নেই, বিশেষত ভাষা, কোডের ধরণ এবং কোডটি যে পণ্যটির মধ্যে যেতে পারে তার ধরণের উল্লেখ না করেই। বিবেচনা:

  • ভাষার বিষয়। উদ্দেশ্য-সি-তে, প্রায়শই শূন্য বার্তাগুলি প্রেরণ করা ঠিক হয়; কিছুই ঘটে না, তবে প্রোগ্রামটি ক্রাশ হয় না either জাভা স্পষ্ট পয়েন্টার নেই, তাই শূন্য পয়েন্টার সেখানে বড় উদ্বেগ নয়। সি-তে আপনাকে আরও একটু যত্নবান হওয়া দরকার।

  • ভৌতিক হতে হবে অযৌক্তিক, অযৌক্তিক সন্দেহ বা অবিশ্বাস। এটি সফ্টওয়্যারের পক্ষে মানুষের চেয়ে ভাল আর কিছু নয়।

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

  • আপনি সর্বদা খারাপ ইনপুট সনাক্ত করতে পারবেন না। আপনি ধর্মীয়ভাবে আপনার পয়েন্টারগুলিকে শূন্যের সাথে তুলনা করতে পারেন, তবে এটি কেবল 2 ^ 32 সম্ভাব্য মানগুলির মধ্যে একটিকে খুঁজে বের করে, প্রায় সবগুলিই খারাপ।

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

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


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

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

1

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

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

আরও বেশি ব্যবহারকারী সম্পর্কিত নোটে, বর্ণনামূলক এখনও সহজ কিছু ফিরিয়ে দেওয়া ভাল, যাতে যে কেউ এটি বুঝতে পারে। যদি আপনার ক্লায়েন্ট ফোন করে এবং "প্রোগ্রামটি ক্র্যাশ হয়ে গেছে, এটি ঠিক করুন" বলে, আপনার হাতে কী কাজ হয়েছে এবং কী হয়েছে এবং এটি কীভাবে সমস্যার সমাধান করতে পারে সে সম্পর্কে নজর রেখে আপনার হাতে অনেক কাজ রয়েছে। ব্যতিক্রমগুলির যথাযথ হ্যান্ডলিং ব্যবহার করা কেবল ক্রাশকে আটকাতে পারে না, তবে মূল্যবান তথ্য সরবরাহ করে। ক্লায়েন্টের একটি কল যা "প্রোগ্রামটি আমাকে একটি ত্রুটি দিচ্ছে It এটি বলছে 'এক্সওয়াইজেড পদ্ধতি এম এর জন্য বৈধ ইনপুট নয়, কারণ জেড খুব বড়", বা এরকম কিছু, এমনকি যদি তাদের কোনও ধারণা না থাকে তবে তার অর্থ কী, আপনি ঠিক কোথায় তাকান জানি। অতিরিক্তভাবে, আপনার / আপনার সংস্থার ব্যবসায়িক অনুশীলনের উপর নির্ভর করে, আপনি এই সমস্যাগুলিও ঠিক করছেন এমনটা নাও হতে পারে, তাই তাদের একটি ভাল মানচিত্র রেখে দেওয়া ভাল।

সুতরাং আমার উত্তরের সংক্ষিপ্ত সংস্করণটি হল আপনার প্রথম বিকল্পটি সেরা is

Inconsistent input -> no action + notify caller

1

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

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

প্রোগ্রামের নির্ভুলতা (পূর্ব শর্তাদি, আক্রমণকারীদের, পোস্টের শর্তগুলির বৈধতা) যাচাই করার জন্য বিল্ড পুনরাবৃত্তির সময় জোর দেওয়া উচিত। তারপরে উত্সাহ সংকলনটিতে জোর দেওয়া হবে।


0

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

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

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


জাভাতে আপনি একটি নাল পয়েন্টার ব্যতিক্রম পান। সি ++ এ একটি নাল পয়েন্টার অ্যাপ্লিকেশন ক্র্যাশ করে। হতে পারে অন্যান্য উদাহরণ রয়েছে: শূন্য দ্বারা বিভাজন, সূচকের পরিসর ছাড়াই ইত্যাদি।
জর্জিও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.