Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::promise<R>::set_exception

      From cppreference.com
      <cpp‎ |thread‎ |promise
       
       
      Concurrency support library
      Threads
      (C++11)
      (C++20)
      this_thread namespace
      (C++11)
      (C++11)
      (C++11)
      Cooperative cancellation
      Mutual exclusion
      Generic lock management
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      Condition variables
      (C++11)
      Semaphores
      Latches and Barriers
      (C++20)
      (C++20)
      Futures
      (C++11)
      (C++11)
      (C++11)
      Safe reclamation
      Hazard pointers
      Atomic types
      (C++11)
      (C++20)
      Initialization of atomic types
      (C++11)(deprecated in C++20)
      (C++11)(deprecated in C++20)
      Memory ordering
      (C++11)(deprecated in C++26)
      Free functions for atomic operations
      Free functions for atomic flags
       
       
      void set_exception(std::exception_ptr p);
      (since C++11)

      Atomically stores the exception pointerp into the shared state and makes the state ready.

      The operation behaves as thoughset_value,set_exception,set_value_at_thread_exit, andset_exception_at_thread_exit acquire a single mutex associated with the promise object while updating the promise object.

      An exception is thrown if there is no shared state or the shared state already stores a value or exception.

      Calls to this function do not introduce data races with calls toget_future (therefore they need not synchronize with each other).

      Contents

      [edit]Parameters

      p - exception pointer to store. The behavior is undefined ifp is null

      [edit]Return value

      (none)

      [edit]Exceptions

      std::future_error on the following conditions:

      • *this has no shared state. The error code is set tono_state.

      [edit]Example

      Run this code
      #include <future>#include <iostream>#include <thread> int main(){std::promise<int> p;std::future<int> f= p.get_future(); std::thread t([&p]{try{// code that may throwthrowstd::runtime_error("Example");}catch(...){try{// store anything thrown in the promise                p.set_exception(std::current_exception());// or throw a custom exception instead// p.set_exception(std::make_exception_ptr(MyException("mine")));}catch(...){}// set_exception() may throw too}}); try{std::cout<< f.get();}catch(conststd::exception& e){std::cout<<"Exception from the thread: "<< e.what()<<'\n';}    t.join();}

      Output:

      Exception from the thread: Example

      [edit]See also

      sets the result to indicate an exception while delivering the notification only at thread exit
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/thread/promise/set_exception&oldid=161211"

      [8]ページ先頭

      ©2009-2025 Movatter.jp