আমি সি # তে এই নতুন বৈশিষ্ট্যটি জুড়ে এসেছি যা কোনও নির্দিষ্ট শর্ত পূরণ হওয়ার পরে একজন ক্যাচ হ্যান্ডলারকে সম্পাদন করতে দেয় allows
int i = 0;
try
{
throw new ArgumentNullException(nameof(i));
}
catch (ArgumentNullException e)
when (i == 1)
{
Console.WriteLine("Caught Argument Null Exception");
}
আমি কখন এটি কখন কার্যকর হতে পারে তা বোঝার চেষ্টা করছি।
একটি দৃশ্য এরকম কিছু হতে পারে:
try
{
DatabaseUpdate()
}
catch (SQLException e)
when (driver == "MySQL")
{
//MySQL specific error handling and wrapping up the exception
}
catch (SQLException e)
when (driver == "Oracle")
{
//Oracle specific error handling and wrapping up of exception
}
..
তবে এটি আবার এমন কিছু যা আমি একই হ্যান্ডলারের মধ্যে করতে পারি এবং ড্রাইভারের ধরণের উপর নির্ভর করে বিভিন্ন পদ্ধতিতে প্রতিনিধিত্ব করতে পারি। এটি কি কোডটি বুঝতে সহজ করে তোলে? যুক্তিযুক্তভাবে না।
আরেকটি দৃশ্য যা আমি ভাবতে পারি তা হ'ল:
try
{
SomeOperation();
}
catch(SomeException e)
when (Condition == true)
{
//some specific error handling that this layer can handle
}
catch (Exception e) //catchall
{
throw;
}
আবার এটি এমন কিছু যা আমি পছন্দ করতে পারি:
try
{
SomeOperation();
}
catch(SomeException e)
{
if (condition == true)
{
//some specific error handling that this layer can handle
}
else
throw;
}
হ্যান্ডলারের সুনির্দিষ্ট ব্যবহারের কেসগুলি হ্যান্ডলারের তুলনায় হ্যান্ডলারের মতো এড়িয়ে যাওয়া এবং স্ট্যাক আনওয়াইন্ডিংয়ের তুলনায় 'ক্যাচ, যখন' ফিচারটি ব্যতিক্রম হ্যান্ডলিং দ্রুততর করে তোলে? এই বৈশিষ্ট্যটি আরও ভাল ফিট করে এমন কোনও নির্দিষ্ট ব্যবহারের কেস রয়েছে যা লোকেরা তখন একটি ভাল অনুশীলন হিসাবে গ্রহণ করতে পারে?
when
ব্যতিক্রমগুলি নিজেই অ্যাক্সেস করার প্রয়োজন হয় তবে এটি কার্যকর