ব্যতিক্রম বা ত্রুটি কোডগুলি


12

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

ক্লায়েন্টের পক্ষ থেকে আপনি কী পরিচালনা করতে পছন্দ করবেন: একটি ত্রুটি কোড গ্রহণ করা বা কোনও সার্ভারফল্ট ব্যতিক্রম পরিচালনা করা যাতে ত্রুটির কারণ রয়েছে?
1) আমরা ব্যাতিক্রম কেন ভাবছি: কারণ এটি সার্ভার সাইড কোডটি অনেক বেশি ইউনিফর্ম তৈরি করবে
2) আমরা ত্রুটি কোডগুলি কেন ভাবছি: কারণ আমরা মনে করি এটি ক্লায়েন্টের দিকের দৃষ্টিকোণ থেকে আরও জ্ঞান লাভ করে।

2) যদি সত্যিই সত্য হয় তবে আমরা সম্ভবত ব্যতিক্রমগুলির চেয়ে ত্রুটি কোডের জন্য যেতে চাই? এখানে ক্ষেত্রে যে কি?

এছাড়াও, যদি আমরা দেশীয় ক্লায়েন্টের পরিবর্তে পরিচালিত ক্লায়েন্টদের সাথে কথা বলি তবে উত্তর কি পরিবর্তন হবে?


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

এটি সহায়তা করতে পারে- www.codeproject.com/KB/cpp/cppexceptionPetcontra.aspx
গুলশান

উত্তর:


8

SOAP এর ত্রুটিগুলির ধারণা রয়েছে , আপনি সার্ভার সাইডে এবং ক্লায়েন্টের প্রক্সিতে ফল্টটিকে আবার একটি ব্যতিক্রমে রূপান্তর করতে পারেন। এটি ডাব্লুসিএফ এবং জাভা মেট্রো স্ট্যাকগুলিতে উল্লেখযোগ্যভাবে ভাল কাজ করে, স্থানীয় সি ++ ক্লায়েন্টদের উপর মন্তব্য করতে পারে না।

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

মাইক্রোসফ্ট প্যাটার্নস এবং অনুশীলনগুলিতে গাইডেন্স পরীক্ষা করুন ।


ধন্যবাদ এই ভাল লাগছে। আপনি কি আমাকে পৃষ্ঠার ভিতরে আরও নির্দিষ্ট লিঙ্কটি দিতে পারেন?
অমিত ওয়াধওয়া

এছাড়াও ইউজারনেটফাউন্ড ইত্যাদির মতো ব্যবসায়িক স্তরের ত্রুটিগুলির কী কী এগুলিও ব্যতিক্রম হিসাবে পরিচালনা করা উচিত
অমিত ওয়াধওয়া

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

4

আমি সম্প্রতি জাভা 6 লাইব্রেরি সহ একটি ওয়েব পরিষেবা করেছি, যা কলারের কাছে ফিরে ব্যতিক্রমের প্রতিবেদন করতে পারে (এটি স্বয়ংক্রিয়ভাবে কীভাবে হয় তা আমি সন্ধান করিনি)।

বিকাশকারীকে ত্রুটি প্রতিবেদনে ক্লায়েন্টকে স্ট্যাক ট্রেস সরবরাহ করার ক্ষমতাটি খুব কার্যকর হয়েছে (আনুমানিক টাইমস্ট্যাম্প পাওয়ার বিপরীতে এবং তারপরে আপনার লগগুলিতে এটি সন্ধান করতে হবে, যদি আপনি লগইন করে থাকেন)।

সুতরাং, বিকাশকারী দৃষ্টিকোণ থেকে দেখা, ব্যতিক্রমগুলি ব্যবহার করুন।


1
আমি সম্মত হই যে এটি ডগফুড এবং বিটাতে কার্যকর হতে পারে তবে আপনি কি সত্যিকারের বিশ্ব ব্যবহারের ক্ষেত্রে ইভেন্ট লগ বা লগ ফাইলগুলিতে স্ট্যাকের চিহ্নগুলি স্প্রাউট করতে চান (এবং অবশ্যই পরিষেবাটি আপনার প্রয়োজনের চেয়ে আরও প্রক্রিয়া প্রকাশ করতে চান / প্রক্রিয়াতে চান )
অমিত ওয়াধওয়া

2
@ অ্যামিট, আমাকে এটির উপর বিশ্বাস করুন: আপনি যদি কোনও পরিস্থিতির উত্পাদনে স্ট্যাকের ট্রেস দিচ্ছেন, তবে আপনি স্ট্যাক ট্রেসটি চান!

1
ক্লায়েন্টের পাশে স্ট্যাক ট্রেস করার সুবিধা কী, আমরা ক্লায়েন্টকে দেওয়ার আগে অবশ্যই সার্ভারের সমস্ত ব্যতিক্রম লগ করব।
অমিত ওয়াধওয়া

এছাড়াও ইউজারনেটফাউন্ড ইত্যাদির মতো ব্যবসায়িক স্তরের ত্রুটিগুলির কী কী এগুলিও ব্যতিক্রম হিসাবে পরিচালনা করা উচিত
অমিত ওয়াধওয়া

-2

এটি যদি কোনও ওয়েব সার্ভিস হয় তবে আপনি ক্লায়েন্টের কাছে ধরা পড়বে এমন কোনও ব্যতিক্রম ছুঁড়ে দেওয়ার জন্য সার্ভারকে ঠিকঠাক কারণ করতে পারবেন না। ইন্টারফেসে, আপনার সার্ভারটি মূলত কিছু ধরণের ত্রুটি কোডটি ফিরিয়ে দিতে হবে, এমনকি যদি এটি স্ট্রিংও বলে An exception occurred. Type %s, message %s, stack trace %s

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


আমার ধারণা অনাবৃত ব্যতিক্রম ক্লায়েন্টের কাছে সার্ভারফল্ট হিসাবে যাবে
অমিত ওয়াধওয়া

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

এটি কেবল সুরক্ষা সেরা অনুশীলনের বিরুদ্ধে নয়: ক্লায়েন্টটি আপনার সার্ভারের স্ট্যাক ট্রেসের সাথে ঠিক কী করবে? এটি মুদ্রণ এবং আপনি এটি প্রেরণ? ইমেল হিসাবে প্রেরণ করবেন? লুব পেপারের জন্য ব্যবহার করবেন?
JensG

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