@@ -1710,41 +1710,70 @@ jerry_get_error_type (const jerry_value_t value);
17101710- [jerry_create_error](#jerry_create_error)
17111711- [jerry_value_is_error](#jerry_value_is_error)
17121712
1713- ## jerry_value_clear_error_flag
1713+ ## jerry_get_value_from_error
17141714
17151715**Summary**
17161716
1717- Clear both the error and abort flags.
1717+ Get the value from an error.
1718+
1719+ Many API functions cannot be called with an error value.
1720+ This function extracts the API value from an error. The second argument defines
1721+ whether the input error value must be released or not. If it is set to `true`,
1722+ then a [`jerry_release_value`](#jerry_release_value) function will be called
1723+ for the first argument, so the error value won't be available after the call of
1724+ `jerry_get_value_from_error`. The second argument should be false if both error
1725+ and its represented value are needed. The first argument is returned unchanged if it is not an error.
1726+
1727+ *Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it
1728+ is no longer needed.
17181729
17191730**Prototype**
17201731
17211732```c
1722- void
1723- jerry_value_clear_error_flag (jerry_value_t *value_p);
1733+ jerry_value_t
1734+ jerry_get_value_from_error (jerry_value_t value, bool release)
17241735```
17251736
1726- - `value_p` - pointer to an api value
1737+ - `value` - error (api) value
1738+ - `release` - raw boolean, defines whether input value must be released
1739+ - return value - api value
17271740
1728- **Example**
1741+ **Example 1 **
17291742
17301743```c
17311744{
1732- jerry_value_t value ;
1745+ jerry_value_t error ;
17331746 ... // create or acquire value
17341747
1735- jerry_value_clear_error_flag (&value);
1748+ jerry_value_set_error_flag (&error);
1749+ jerry_value_t value = jerry_get_value_from_error (error, true);
1750+ // using the error variable after release is invalid.
17361751
17371752 jerry_release_value (value);
17381753}
17391754```
17401755
1756+ **Example 2**
1757+
1758+ ```c
1759+ {
1760+ jerry_value_t error;
1761+ ... // create or acquire value
1762+
1763+ jerry_value_set_error_flag (&error);
1764+ jerry_value_t value = jerry_get_value_from_error (error, false);
1765+
1766+ jerry_release_value (value);
1767+ jerry_release_value (error);
1768+ }
1769+ ```
1770+
17411771**See also**
17421772
17431773- [jerry_value_t](#jerry_value_t)
17441774- [jerry_value_set_error_flag](#jerry_value_set_error_flag)
17451775- [jerry_value_set_abort_flag](#jerry_value_set_abort_flag)
17461776
1747-
17481777## jerry_value_set_error_flag
17491778
17501779**Summary**
@@ -1776,7 +1805,7 @@ jerry_value_set_error_flag (jerry_value_t *value_p);
17761805**See also**
17771806
17781807- [jerry_value_t](#jerry_value_t)
1779- - [jerry_value_clear_error_flag ](#jerry_value_clear_error_flag )
1808+ - [jerry_get_value_from_error ](#jerry_get_value_from_error )
17801809- [jerry_value_set_abort_flag](#jerry_value_set_abort_flag)
17811810
17821811
@@ -1811,53 +1840,10 @@ jerry_value_set_abort_flag (jerry_value_t *value_p);
18111840**See also**
18121841
18131842- [jerry_value_t](#jerry_value_t)
1814- - [jerry_value_clear_error_flag ](#jerry_value_clear_error_flag )
1843+ - [jerry_get_value_from_error ](#jerry_get_value_from_error )
18151844- [jerry_value_set_error_flag](#jerry_value_set_error_flag)
18161845
18171846
1818- ## jerry_get_value_without_error_flag
1819-
1820- **Summary**
1821-
1822- If the input value is an error value, then return a new reference to its referenced value.
1823- Otherwise, return a new reference to the value itself.
1824-
1825- *Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value)
1826- when it is no longer needed.
1827-
1828- **Prototype**
1829-
1830- ```c
1831- jerry_value_t
1832- jerry_get_value_without_error_flag (jerry_value_t value)
1833- ```
1834-
1835- - `value` - api value
1836-
1837- **Example**
1838-
1839- ```c
1840- {
1841- jerry_value_t value;
1842- ... // create or acquire value
1843-
1844- jerry_value_set_error_flag (&value);
1845-
1846- jerry_value_t real_value = jerry_get_value_without_error_flag (value);
1847- ... // process the real_value. Different from `jerry_value_clear_error_flag`,
1848- // the error `value` will not be automatically released after calling
1849- // `jerry_get_value_without_error_flag`.
1850-
1851- jerry_release_value (value);
1852- jerry_release_value (real_value);
1853- }
1854- ```
1855-
1856- **See also**
1857-
1858- - [jerry_acquire_value](#jerry_acquire_value)
1859- - [jerry_value_clear_error_flag](#jerry_value_clear_error_flag)
1860-
18611847# Getter functions of 'jerry_value_t'
18621848
18631849Get raw data from API values.
@@ -2892,7 +2878,7 @@ jerry_create_error (jerry_error_t error_type,
28922878**See also**
28932879
28942880- [jerry_value_is_error](#jerry_value_is_error)
2895- - [jerry_value_clear_error_flag ](#jerry_value_clear_error_flag )
2881+ - [jerry_get_value_from_error ](#jerry_get_value_from_error )
28962882- [jerry_value_set_error_flag](#jerry_value_set_error_flag)
28972883
28982884
0 commit comments