একটি ডেস্কটপ অ্যাপ্লিকেশনটিতে যখন কোনও অপরিহার্য ব্যতিক্রম ঘটে তখন সেরা অনুশীলন কী?
আমি ব্যবহারকারীকে একটি বার্তা দেখানোর কথা ভাবছিলাম, যাতে সে সমর্থনে যোগাযোগ করতে পারে। আমি ব্যবহারকারীকে অ্যাপ্লিকেশনটি পুনরায় চালু করার পরামর্শ দিচ্ছি, তবে তা জোর করে না। এখানে যা আলোচনা করা হয় তার অনুরূপ: ux.stackexchange.com - অপ্রত্যাশিত অ্যাপ্লিকেশন ত্রুটিগুলি পরিচালনা করার সর্বোত্তম উপায় কোনটি?
প্রকল্পটি একটি নেট ডাব্লুপিএফ অ্যাপ্লিকেশন, সুতরাং বর্ণিত প্রস্তাবটি এর মতো দেখতে পেল (নোট করুন এটি একটি সরল উদাহরণ। সম্ভবত ব্যবহারকারী "বিবরণ দেখান" এ ক্লিক না করে এবং কিছু কার্যকারিতা সরবরাহ না করা পর্যন্ত ব্যতিক্রমের বিবরণগুলি আড়াল করার অর্থ হবে) সহজেই ত্রুটিটি রিপোর্ট করুন):
public partial class App : Application
{
public App()
{
DispatcherUnhandledException += OnDispatcherUnhandledException;
}
private void OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
LogError(e.Exception);
MessageBoxResult result = MessageBox.Show(
$"Please help us fix it and contact support@example.com. Exception details: {e.Exception}" +
"We recommend to restart the application. " +
"Do you want to stop the application now? (Warning: Unsaved data gets lost).",
"Unexpected error occured.", MessageBoxButton.YesNo);
// Setting 'Handled' to 'true' will prevent the application from terminating.
e.Handled = result == MessageBoxResult.No;
}
private void LogError(Exception ex)
{
// Log to a log file...
}
}
বাস্তবায়নে (ভিউমোডেলস বা বহিরাগত ইভেন্টগুলির ইভেন্ট হ্যান্ডলারের কমান্ডস) আমি কেবল তখনই সুনির্দিষ্ট বহিরাগত ব্যতিক্রমটি ধরতে পারি এবং উপরে বর্ণিত "শেষ অবলম্বন হ্যান্ডলার" পর্যন্ত অন্য সমস্ত ব্যতিক্রম (হাড়হীন এবং অজানা ব্যতিক্রম) বুদবুদ হতে দেই। অস্থিযুক্ত এবং বহিরাগত ব্যতিক্রমগুলির সংজ্ঞার জন্য একবার দেখুন: এরিক লিপার্ট - ভেক্সিং ব্যতিক্রম
অ্যাপ্লিকেশনটি সমাপ্ত করা উচিত কিনা তা কি ব্যবহারকারীকে সিদ্ধান্ত নিতে দেওয়া অর্থবোধ করে? অ্যাপ্লিকেশনটি বন্ধ হয়ে গেলে, আপনার পক্ষে অবশ্যই কোনও অসামঞ্জস্য অবস্থা নেই ... অন্যদিকে ব্যবহারকারীর অরক্ষিত ডেটা আলগা করতে পারে বা অ্যাপ্লিকেশনটি পুনরায় আরম্ভ না করা অবধি কোনও প্রারম্ভিক বাহ্যিক প্রক্রিয়া বন্ধ করতে সক্ষম হয় না।
অথবা আপনি যে ধরনের অ্যাপ্লিকেশন লিখছেন তার উপর নির্ভর করে যদি আপনার হাতছাড়া ব্যতিক্রম নিয়ে অ্যাপ্লিকেশনটি সমাপ্ত করা উচিত তবে সিদ্ধান্তটি কি? কোড সম্পূর্ণ, দ্বিতীয় সংস্করণে বর্ণিত মত "দৃness়তা" বনাম "যথার্থতা" এর মধ্যে এটি কি কেবল বাণিজ্য?
আমরা কী ধরণের অ্যাপ্লিকেশনটির বিষয়ে কথা বলছি তা আপনাকে কিছু প্রসঙ্গে জানাতে: অ্যাপ্লিকেশনটি মূলত রাসায়নিক ল্যাব যন্ত্রগুলি নিয়ন্ত্রণ করতে এবং ব্যবহারকারীকে পরিমাপ করা ফলাফলগুলি দেখানোর জন্য ব্যবহৃত হয়। এটি করার জন্য ডাব্লুপিএফ অ্যাপ্লিকেশনগুলি কিছু পরিষেবা (স্থানীয় এবং দূরবর্তী পরিষেবা) এর সাথে যোগাযোগ করে। ডাব্লুপিএফ অ্যাপ্লিকেশন সরাসরি যন্ত্রগুলির সাথে যোগাযোগ করে না।