এই প্রশ্নের ব্যতিক্রম হ্যান্ডলিং সমর্থন করে যে কোনও OO প্রোগ্রামিং ভাষা প্রয়োগ করতে; আমি কেবল চিত্রণমূলক উদ্দেশ্যে সি # ব্যবহার করছি।
ব্যতিক্রমগুলি সাধারণত উত্থাপিত হয় যখন কোনও সমস্যা দেখা দেয় যে কোডটি তাত্ক্ষণিকভাবে হ্যান্ডেল করতে পারে না এবং তারপরে catch
কোনও পৃথক স্থানে (সাধারণত একটি বাইরের স্ট্যাক ফ্রেম) কোনও ধারায় ধরা পড়ে ।
প্রশ্ন: এমন কোনও বৈধ পরিস্থিতি রয়েছে যেখানে ব্যতিক্রম ছুঁড়ে ফেলা হয় না এবং ধরা পড়ে না, তবে কেবল কোনও পদ্ধতি থেকে ফিরে এসে ত্রুটিযুক্ত বস্তু হিসাবে পাস করা হয়?
এই প্রশ্নটি আমার জন্য উঠে এসেছিল কারণ। নেট 4 এর System.IObserver<T>.OnError
পদ্ধতিটি কেবল এটাই প্রস্তাব করে: ব্যতিক্রম ত্রুটিযুক্ত বস্তু হিসাবে পাস হচ্ছে।
আসুন অন্য পরিস্থিতিতে দেখুন, বৈধতা। ধরা যাক আমি প্রচলিত জ্ঞান অনুসরণ করছি এবং তাই আমি একটি ত্রুটিযুক্ত অবজেক্টের ধরণ IValidationError
এবং ValidationException
অপ্রত্যাশিত ত্রুটিগুলি রিপোর্ট করার জন্য ব্যবহৃত একটি পৃথক ব্যতিক্রমের মধ্যে পার্থক্য করছি :
partial interface IValidationError { }
abstract partial class ValidationException : System.Exception
{
public abstract IValidationError[] ValidationErrors { get; }
}
( System.Component.DataAnnotations
নামস্থানটি বেশ কিছু অনুরূপ কাজ করে))
এই ধরণের নিম্নলিখিত হিসাবে নিযুক্ত করা যেতে পারে:
partial interface IFoo { } // an immutable type
partial interface IFooBuilder // mutable counterpart to prepare instances of above type
{
bool IsValid(out IValidationError[] validationErrors); // true if no validation error occurs
IFoo Build(); // throws ValidationException if !IsValid(…)
}
এখন আমি ভাবছি, আমি কি এইগুলির উপরেরটি সহজ করতে পারি না:
partial class ValidationError : System.Exception { } // = IValidationError + ValidationException
partial interface IFoo { } // (unchanged)
partial interface IFooBuilder
{
bool IsValid(out ValidationError[] validationErrors);
IFoo Build(); // may throw ValidationError or sth. like AggregateException<ValidationError>
}
প্রশ্ন: এই দুটি পৃথক পদ্ধতির সুবিধা এবং অসুবিধাগুলি কী?
AggregateException
পরিবর্তে নিক্ষেপের ক্ষেত্রে কী বোঝাতে চাইছেন ? ভাল যুক্তি.