Seeking Clarification for Required Rule 0-1-8

Moderators: david ward, misra cpp

Post Reply
gs
Posts: 87
Joined: Thu Nov 18, 2004 1:39 am

Seeking Clarification for Required Rule 0-1-8

Post by gs » Fri Jun 20, 2008 5:23 pm

MISRA C++ 0-1-8 (Required) states, "All functions with void return type shall have external side effect(s)." Quoting the rationale:
A function which does not return a value and which does not have external side effects will only consume time and will not contribute to the generation of any outputs, which may not meet developer expectations. The following are examples of external side effects:
• Reading or writing to a file, stream, etc.;
• Changing the value of a non local variable;
• Changing the value of an argument having reference type;
• Using a volatile object;
• Raising an exception.
So, what about this function:

Code: Select all

void f()
    {
    try {
        throw 3;
    }
    catch( int )
        {}
    }
The above function raises an exception. However, as We see, the catch handler processes the exception within the same function and does "not contribute to the generation of any outputs". In such a case, does the function meet the requirements of 0-1-8?

misra cpp
Posts: 145
Joined: Mon Jun 02, 2008 1:55 pm
Company: MISRA

Re: Seeking Clarification for Required Rule 0-1-8

Post by misra cpp » Tue Oct 11, 2016 10:03 am

A valid point.

A future edition or Technical Corrigendum will modify the exception to 'Raises an exception that transfers control outside the current function'
Posted by and on behalf of
the MISRA C++ Working Group

Post Reply

Return to “6.0 Language independent issues (C++)”