Bagaimana untuk menangkap jenis pengecualian tertentu dalam pengendalian pengecualian fungsi C++?

WBOY
Lepaskan: 2024-04-15 22:09:02
asal
966 orang telah melayarinya

Cara menangkap jenis pengecualian tertentu dalam C++: gunakan blok cuba-tangkap. Nyatakan jenis pengecualian untuk ditangkap dalam klausa tangkapan, seperti tangkapan (const std::runtime_error& e). Dalam kes praktikal, fungsi read_file() mengendalikan kes di mana fail tidak wujud dengan membuang std::runtime_error, dan menggunakan blok try-catch untuk menangkap pengecualian ini dan mencetak mesej ralat.

C++ 函数异常处理中如何捕获特定类型的异常?

Tangkap jenis pengecualian tertentu dalam pengendalian pengecualian fungsi C++

Dalam C++, apabila menggunakan blok try-catch untuk mengendalikan pengecualian yang dilemparkan dalam fungsi, anda boleh menggunakan tangkap Klausa menangkap jenis pengecualian tertentu. Sebagai contoh, untuk menangkap pengecualian jenis std::runtime_error, anda boleh menggunakan sintaks berikut: try-catch 块处理函数中抛出的异常时,可以使用 catch 子句捕获特定类型的异常。例如,要捕获 std::runtime_error 类型的异常,可以使用以下语法:

try {
  // 函数代码
} catch (const std::runtime_error& e) {
  // 处理 std::runtime_error 异常
}
Salin selepas log masuk

实战案例:

假设有一个 read_file() 函数,它负责从文件中读取数据。如果文件不存在,函数会抛出一个 std::runtime_error 异常。我们可以使用 try-catch

#include <iostream>
#include <fstream>

void read_file(const std::string& filename) {
  std::ifstream file(filename);
  if (!file.is_open()) {
    throw std::runtime_error("File not found");
  }
  
  // 读取文件内容
}

int main() {
  try {
    read_file("myfile.txt");
  } catch (const std::runtime_error& e) {
    std::cerr << "Error: " << e.what() << std::endl;
  }
  return 0;
}
Salin selepas log masuk

Kes praktikal:

🎜🎜Andaikan terdapat read_file()</code > fungsi, yang Bertanggungjawab untuk membaca data daripada fail. Jika fail tidak wujud, fungsi membuang pengecualian <code>std::runtime_error. Kita boleh menggunakan blok try-catch untuk mengendalikan pengecualian ini: 🎜
Error: File not found
Salin selepas log masuk
🎜Jalankan program ini dan jika fail "myfile.txt" tidak wujud, mesej ralat berikut akan dicetak: 🎜rrreee

Atas ialah kandungan terperinci Bagaimana untuk menangkap jenis pengecualian tertentu dalam pengendalian pengecualian fungsi C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan