لماذا لا يتم القبض على هذا الخطأ؟
-
03-10-2019 - |
سؤال
لديّ الرمز التالي في مشروعي ، DeletesElector هو نموذج يحتوي على DataGridView (مع أعمدة Autosize) عليه.
try
{
if (deleteSelector.ShowDialog() == DialogResult.OK)
{
}
}
catch (InvalidOperationException)
{
//Bug workaround
}
Try Catch هو أن النموذج المنبثقة مع Gridview عليها يرفع invalidoperationException مرة واحدة في حين. هذا هو الحل المقترح ، انظر
في وقت سابق ، استخدمت عرض على الحذف ، وعمل الحل البديل بشكل مثالي. الآن ، مع ShowDialog يبدو أن الخطأ لم يعد قد تم اللحاق به (أحصل على رسالة خطأ غير محصورة). لماذا لا يتم اللحاق بالخطأ؟
المحلول
ShowDialog
يقوم بتشغيل مربع الحوار على مؤشر ترابط منفصل ، لذلك يتم إلقاء الاستثناء في مكدس مختلف إلى معالج الاستثناء الخاص بك.
أقترح عليك أن تجد حلًا مختلفًا - مجرد اصطياد InvalidOperationException
فظيع للغاية ، ولا أرغب في المراهنة على أن النموذج سيكون في حالة معقولة بعد ذلك.
لا تنتمي إلى StackOverflow