Cpp Standard Library 简明教程

C++ Library - <exception>

Introduction

它是一个标准的异常类。标准库组件抛出的所有对象都派生自此类。因此,所有标准异常都可以通过按引用捕获此类型来捕获。

It is a standard exception class. All objects thrown by components of the standard library are derived from this class. Therefore, all standard exceptions can be caught by catching this type by reference.

Declaration

以下是 std::exception 的声明。

Following is the declaration for std::exception.

class exception;

Example

以下是在 std::exception 中的示例。

In below example for std::exception.

#include <thread>
#include <vector>
#include <iostream>
#include <atomic>

std::atomic_flag lock = ATOMIC_FLAG_INIT;

void f(int n) {
   for (int cnt = 0; cnt < 100; ++cnt) {
      while (lock.test_and_set(std::memory_order_acquire))
         ;
      std::cout << "Output from thread " << n << '\n';
      lock.clear(std::memory_order_release);
   }
}

int main() {
   std::vector<std::thread> v;
   for (int n = 0; n < 10; ++n) {
      v.emplace_back(f, n);
   }
   for (auto& t : v) {
      t.join();
   }
}

Derived types

Sr.No.

Derived types

Definition

1

bad_alloc

This exception thrown on failure allocating memory

2

bad_cast

This exception thrown on failure to dynamic cast

3

bad_exception

This an exception thrown by unexpected handler

4

bad_function_call

This exception thrown on bad call

5

bad_typeid

This exception thrown on typeid of null pointer

6

bad_weak_ptr

It is a bad weak pointer

7

ios_base::failure

It is a base class for stream exceptions

8

logic_error

It is a logic error exception

9

runtime_error

It is a runtime error exception

Derived types(through logic_error)

Sr.No.

Derived types

Definition

1

domain_error

It is a domain error exception

2

future_error

It is a future error exception

3

invalid_argument

It is an invalid argument exception

4

length_error

It is a length error exception

5

out_of_range

It is a out-of-range exception

Derived types(through runtime_error)

Sr.No.

Derived types

Definition

1

overflow_error

It is an overflow error exception

2

range_error

It is a range error exception

3

system_error

It is a system error exception

4

underflow_error

It is a underflow error exception

Derived types(through bad_alloc)

Sr.No.

Derived types

Definition

1

bad_array_new_length

It is an exception on bad array length

Derived types(through system_error, since C++11)

Sr.No.

Derived types

Definition

1

ios_base::failure

It is a base class for stream exceptions

Member functions

Sr.No.

Derived types

Definition

1

(constructor)

It is constructor exception

2

[role="bare"]../cpp_standard_library/cpp_exception_operator.html

It is a copy exception

3

what

It is used to get string identifying exception

4

(destructor)

It is a destroy exception