আমি আমার। নেট অ্যাপ্লিকেশনটির মধ্যে থেকে একটি COM অবজেক্ট (MODI) ব্যবহার করছি। আমি যে পদ্ধতিতে কল করছি এটি একটি সিস্টেম.অ্যাক্সেসভিওলেশন এক্সসেপশন নিক্ষেপ করে যা ভিজ্যুয়াল স্টুডিওর দ্বারা বিরত থাকে। অদ্ভুত বিষয়টি হ'ল আমি আমার কলটি একটি ক্যাপ ক্যাচে আবদ্ধ করেছি, যার অ্যাক্সেসভিওলেশন এক্সসেপশন, সিএমএক্সেপশন এবং অন্য সব কিছুর জন্য হ্যান্ডলার রয়েছে, তবে যখন ভিজ্যুয়াল স্টুডিও (2010) অ্যাক্সেসভিওলিশন এক্সসেপশনকে বাধা দেয়, তখন ডিবাগারটি পদ্ধতি কল (ডক্ট.ওসিআর) এ বিরতি দেয়, এবং যদি আমি পাশ দিয়ে যাই তবে এটি ক্যাচ ব্লকে প্রবেশের পরিবর্তে পরবর্তী লাইনে অবিরত থাকবে। অতিরিক্ত হিসাবে, আমি যদি ভিজ্যুয়াল স্টুডিওর বাইরে এটি চালিত করি তবে আমার অ্যাপ্লিকেশন ক্র্যাশ হয়ে গেছে। COM অবজেক্টের মধ্যে ফেলে দেওয়া এই ব্যতিক্রমটিকে আমি কীভাবে পরিচালনা করতে পারি?
MODI.Document doc = new MODI.Document();
try
{
doc.Create(sFileName);
try
{
doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false);
sText = doc.Images[0].Layout.Text;
}
catch (System.AccessViolationException ex)
{
//MODI seems to get access violations for some reason, but is still able to return the OCR text.
sText = doc.Images[0].Layout.Text;
}
catch (System.Runtime.InteropServices.COMException ex)
{
//if no text exists, the engine throws an exception.
sText = "";
}
catch
{
sText = "";
}
if (sText != null)
{
sText = sText.Trim();
}
}
finally
{
doc.Close(false);
//Cleanup routine, this is how we are able to delete files used by MODI.
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(doc);
doc = null;
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}
Exception
সমস্ত ব্যতিক্রম ফাঁদে ফেলতে এবং ব্যতিক্রমটি আসলে কী তা দেখতে কোনও সাময়িকভাবে (সাময়িকভাবে!) কোনও হ্যান্ডলার লাগানোর চেষ্টা করেছেন ?