Checked exceptions in C++
От: Максим Рогожин Россия  
Дата: 24.04.18 18:27
Оценка: +1
Привет!
Почему в новые стандарты не добавят проверку исключений компилятором?
Re: Checked exceptions in C++
От: andyp  
Дата: 24.04.18 21:38
Оценка: 17 (1) +5
Здравствуйте, Максим Рогожин, Вы писали:

МР>Привет!

МР>Почему в новые стандарты не добавят проверку исключений компилятором?

Фича неоднозначная. Многие ее вредной находят даже в Java. Например

https://blog.philipphauer.de/checked-exceptions-are-evil/

http://literatejava.com/exceptions/checked-exceptions-javas-biggest-mistake/
Re: Checked exceptions in C++
От: B0FEE664  
Дата: 25.04.18 12:42
Оценка:
Здравствуйте, Максим Рогожин, Вы писали:

МР>Привет!

МР>Почему в новые стандарты не добавят проверку исключений компилятором?

А что должна делать эта проверка для таблиц указателей на функции?
И каждый день — без права на ошибку...
Re: Checked exceptions in C++
От: Caracrist https://1pwd.org/
Дата: 26.04.18 13:01
Оценка:
Здравствуйте, Максим Рогожин, Вы писали:

МР>Привет!

МР>Почему в новые стандарты не добавят проверку исключений компилятором?

мы написали полуавтоматическую систему проверки, я называю это "активная документация".

EXAMPLE **************************************************** EXAMPLE
struct exception1 : std::exception {};
struct exception2 : std::exception {};
struct exception3 : std::exception {};
struct exception4 : std::exception {};
struct exception5 : exception4 {};

DECLARE_CONTRACT(f4
, THROWS(detailed_exception, "for some reason")
, THROWS(exception4, "for some reason 4"));
void f4()
{
    throw detailed_exception();
}

DECLARE_CONTRACT(f2
, THROWS(exception2, "for reason 2")
, THROWS(exception3, "for reason 3")
, THROWS(detailed_exception, "for some reason"));
void f2()
{
    SIGN_CONTRACT(f2, f4, HANDLES(exception4));
    try
    {
        f4();
        throw exception3();
    }
    catch (exception4)
    {
        throw exception2();
    }
}

DECLARE_CONTRACT(f3
, THROWS(exception2, "for reason 2"));
void f3()
{
    throw exception2();
}

DECLARE_CONTRACT(f1
, THROWS(exception1, "for reason 1")
, THROWS(exception2, "for reason 2")
, THROWS(exception3, "for reason 3"));
void f1()
{
    SIGN_CONTRACT(f1, f2, HANDLES(detailed_exception));
    SIGN_CONTRACT(f1, f3);

    f3();
    try
    {
        f2();
    }
    catch (detailed_exception)
    {
        throw exception1();
    }
}

DECLARE_CONTRACT(f5
, THROWS(exception5, "for reason 5"));
void f5()
{
    SIGN_CONTRACT(f5, f4, HANDLES(detailed_exception), HANDLES(exception4));

    try
    {
        f4();
    }
    catch (exception4)
    {
        return;
    }
    catch (detailed_exception)
    {
        return;
    }
}
DECLARE_CONTRACT_NOTHROW(f6);
void f6()
{
    SIGN_CONTRACT(f6, f5, HANDLES_AS_BASE(exception5, exception4));

    try
    {
        f5();
    }
    catch (exception4)
    {
        return;
    }
}

EXAMPLE **************************************************** EXAMPLE
~~~~~
~lol~~
~~~ Single Password Solution
Re[2]: Checked exceptions in C++
От: jazzer Россия Skype: enerjazzer
Дата: 27.04.18 05:05
Оценка:
Здравствуйте, andyp, Вы писали:

A>http://literatejava.com/exceptions/checked-exceptions-javas-biggest-mistake/


<offtopic>
обсуждение С++ в последней статье, конечно, чисто в стиле ранних рекламных жабовских книг, которые пишут про С++, имея в виду Си:

In the mid 90′s, James Gosling at Sun came up with a new language.
At the time, C++ programming required every single function return to be checked for error.


Exceptions in Java provided major benefits in reliability & error-handling over earlier languages. Java enabled reliable server & business software, in a way C/ C++ never could.



Если что, исключения в С++ были анонсированы в 1986, а в 1990 уже были в ARM.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: Checked exceptions in C++
От: andyp  
Дата: 27.04.18 08:14
Оценка:
Здравствуйте, jazzer, Вы писали:

J>

J>In the mid 90′s, James Gosling at Sun came up with a new language.
J>At the time, C++ programming required every single function return to be checked for error.

J>
J>

J>Exceptions in Java provided major benefits in reliability & error-handling over earlier languages. Java enabled reliable server & business software, in a way C/ C++ never could.

J>

"Мы стали более лучше одеваться" от джавистов. Пусть будет утешением в их нелегкой жизни.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.