আমি খুব সাধারণ একটি প্রশ্ন নিয়ে সংগ্রাম করছি:
আমি এখন একটি সার্ভার অ্যাপ্লিকেশন নিয়ে কাজ করছি, এবং আমার ব্যতিক্রমগুলির জন্য একটি শ্রেণিবিন্যাস উদ্ভাবন করা প্রয়োজন (কিছু ব্যতিক্রম ইতিমধ্যে বিদ্যমান, তবে একটি সাধারণ কাঠামো প্রয়োজন)। আমি কীভাবে এটি করা শুরু করব?
আমি এই কৌশল অনুসরণ করার কথা ভাবছি:
1) কি ভুল হচ্ছে?
- কিছু জিজ্ঞাসা করা হয়, যা অনুমোদিত নয়।
- কিছু জিজ্ঞাসা করা হয়েছে, এটি অনুমোদিত, কিন্তু ভুল পরামিতিগুলির কারণে এটি কাজ করে না।
- অভ্যন্তরীণ ত্রুটির কারণে কিছু জিজ্ঞাসা করা হয়, এটি অনুমোদিত তবে এটি কার্যকর হয় না।
2) কে অনুরোধ চালু করছে?
- ক্লায়েন্ট অ্যাপ্লিকেশন
- অন্য একটি সার্ভার অ্যাপ্লিকেশন
3) বার্তা হস্তান্তর: যেহেতু আমরা একটি সার্ভার অ্যাপ্লিকেশন নিয়ে কাজ করছি, এটি বার্তা প্রাপ্তি এবং প্রেরণ সম্পর্কিত। তাহলে কী যদি কোনও বার্তা প্রেরণ ভুল হয়ে যায়?
এই হিসাবে, আমরা নিম্নলিখিত ব্যতিক্রম প্রকারগুলি পেতে পারি:
- ServerNotAllowedException
- ClientNotAllowedException
- ServerParameterException
- ClientParameterException
- অভ্যন্তরীণ ধারণা (যদি সার্ভারটি জানেন না যে অনুরোধটি কোথা থেকে আসছে)
- ServerInternalException
- ClientInternalException
- MessageHandlingException
ব্যতিক্রম শ্রেণিবিন্যাস সংজ্ঞায়িত করার জন্য এটি একটি খুব সাধারণ পদ্ধতি, তবে আমি আশঙ্কা করছি যে আমার কিছু স্পষ্ট মামলা নাও থাকতে পারে। আপনি যে ধারনাগুলি আমি coveringেকে রাখছি না, সেগুলি সম্পর্কে কি আপনি এই পদ্ধতির কোনও ত্রুটিগুলি সম্পর্কে অবগত আছেন বা এই ধরণের প্রশ্নের জন্য আরও সাধারণ পন্থা রয়েছে (পরবর্তী ক্ষেত্রে, আমি এটি কোথায় খুঁজে পাব)?
আগাম ধন্যবাদ
catch
আমি ব্যবহার করি বেশিরভাগ ব্লকের ক্ষেত্রে, এতে কোন ত্রুটি বার্তা রয়েছে তার চেয়ে আমার ব্যাতিক্রমের বেশি কিছু নেই। কোনও ফাইল পড়ার প্রক্রিয়া চলাকালীন মেমরি বরাদ্দ করতে ব্যর্থ হওয়ায় ব্যর্থতার সাথে জড়িত ব্যতিক্রমের জন্য আমার সত্যিই আলাদা কিছু করার দরকার নেই, তাই আমি std::exception
এতে থাকা ত্রুটি বার্তাটি কেবল ধরা এবং এটির প্রতিবেদন করি, সম্ভবত সাজসজ্জা এটি "Failed to open file: %s", ex.what()
মুদ্রণের আগে এটি একটি স্ট্যাক বাফার সহ ।
catch
একক পুনরুদ্ধার সাইটে লোকেরা বিভিন্ন ব্লক ব্যবহার করার উদাহরণ দেখেছি , তবে প্রায়শই কেবল ব্যতিক্রমের বার্তাকে উপেক্ষা করা এবং আরও স্থানীয়ীকৃত বার্তা প্রিন্ট করা ...