Error code: Difference between revisions

Content deleted Content added
Examples: POSIX
Line 3:
==Examples==
 
In programming languages without [[structured exception handling]] (e.g. in the [[C programming language]]), ''error codes'' are often stored in [[global variable]]s with names like ''<code>errno'' </code>. Error codes are typically identified by number, each indicating a specific error condition. In an application that uses error codes, each function typically defines one ''return code'' to indicate a general failure. Upon receipt of that general failure return code, the programmer can check the value stored in the global error code to determine the condition that caused the function to fail. For example, to indicate that an attempt to open a file failed, a function may set the global error code to indicate the cause of the failure and return an invalid file handle. The following sample shows how the error code can be used to explain the cause of the error:
 
/* attempt to open file for reading */
Line 11:
printf("Cannot open file, error %i, %s\n", errno, strerror(errno));
 
Since error codes are typically global variables, they can be read or written from any portion of the program. As with other global variables, that ease of access can be a source of problems in a [[thread (computer science)|multithreaded]] environment, since the process global variables could be set by more than one thread, causing a [[race condition]]. To fix this problem, [[POSIX]] defines <ttcode>errno</ttcode> to be a [[thread-local]] variable.
 
==Error codes and exception handling==