ব্যবহারকারীর ইনপুট পার্সিং করার সময়, সাধারণত ব্যতিক্রম ছুঁড়ে ফেলা এবং ধরে না রাখার পরিবর্তে বৈধতা পদ্ধতি ব্যবহার করার পরামর্শ দেওয়া হয়। । নেট বিসিএলে, এটির মধ্যে পার্থক্য হবে, উদাহরণস্বরূপ, int.Parse(অবৈধ ডেটাতে একটি ব্যতিক্রম ছুঁড়ে ফেলা হবে) এবং int.TryParse( falseঅবৈধ ডেটাতে রিটার্ন )।
আমি আমার নিজের ডিজাইন করছি
Foo.TryParse(string s, out Foo result)
পদ্ধতি এবং আমি ফেরতের মান সম্পর্কে নিশ্চিত নই। আমি ব্যবহার করতে পারে bool.NET নিজস্ব মত TryParseপদ্ধতি, কিন্তু যে সম্পর্কে কোন ইঙ্গিত দিতে হবে টাইপ ত্রুটির, সঠিক কারণ সম্পর্কে কেন s একটি মধ্যে অংশ পার্স করা যায়নি Foo। (উদাহরণস্বরূপ, sতুলনাহীন প্রথম বন্ধনী, বা অক্ষরগুলির ভুল সংখ্যা বা Barএকটি সঙ্গতিহীন Bazইত্যাদি হতে পারে)
এপিআই'র একজন ব্যবহারকারী হিসাবে , আমি সেই পদ্ধতিগুলি দৃ strongly়ভাবে অপছন্দ করি যা কেবল অপারেশন কেন ব্যর্থ হয়েছিল তা আমাকে না বলে বুলিয়ান একটি সাফল্য / ব্যর্থতা ফিরিয়ে দেয় । এটি একটি অনুমান করা গেমটি ডিবাগিং করে তোলে এবং আমি আমার লাইব্রেরির ক্লায়েন্টদের উপর এটি চাপিয়ে দিতে চাই না।
আমি এই ইস্যুতে প্রচুর পরিশ্রমের কথা ভাবতে পারি (স্টেটাস কোডগুলি ফিরিয়ে আনুন, একটি ত্রুটির স্ট্রিং ফিরিয়ে দিন, আউট প্যারামিটার হিসাবে একটি ত্রুটি স্ট্রিং যুক্ত করুন) তবে তাদের সকলেরই তাদের নিজ নিজ ডাউনসাইড রয়েছে এবং আমিও কনভেনশনগুলির সাথে সামঞ্জস্য রাখতে চাই .NET ফ্রেমওয়ার্ক ।
সুতরাং, আমার প্রশ্নটি নিম্নরূপ:
.NET ফ্রেমওয়ার্কে কি এমন কোন পদ্ধতি রয়েছে যা (ক) ব্যতিক্রম না ছড়িয়ে ইনপুট পার্স করে এবং (খ) একটি সাধারণ সত্য / মিথ্যা বুলিয়ানের চেয়ে আরও বিশদ ত্রুটির তথ্য ফেরত দেয়?
Parse()।