Wednesday, March 12, 2014

C++, Occurance of "__cxa_call_unexpected" in back-trace

قابلیتی در ++C با نام Exception Definition این امکان را برای برنامه‌نویس فراهم میکند تا انواع Exceptionهایی را که تابع میتواند Throw کند برای کامپایلر مشخص کند.
نحوه استفاده از این قابلیت به این شرح است:
int x() throw (ex1, ex2, ...)

در این وضعیت چنانچه تابع Exceptionی غیر از موارد مشخص شده را رها کند، سیستم یک Exception از جنس std::unexpected را ایجاد میکند. که این موضوع در BackTrace با عبارت __cxa_call_unexpected قابل تشخیص است.

راه حل این موضوع درج Exception تعریف نشده در بلاک تعریف و یا حذف کامل قسمت Definition میباشد.

No comments: