Dalam C++, cuba blok mengandungi kod yang mungkin membuang pengecualian, dan blok tangkap digunakan untuk mengendalikan jenis pengecualian tertentu. Blok cuba/tangkap membolehkan program menyambung semula atau meneruskan pelaksanaan dengan anggun, menghalang penamatan yang tidak dijangka. Apabila pengecualian berlaku, kawalan diserahkan kepada blok tangkapan dengan kelayakan jenis yang sepadan, seperti cuba { ... } tangkap (const std::exception& e) { ... }.
Cara blok try/catch mengendalikan pengecualian fungsi dalam C++
Pengendalian pengecualian ialah mekanisme penting dalam pembangunan perisian, yang membolehkan program menyambung semula atau meneruskan pelaksanaan dengan anggun apabila pengecualian berlaku. Dalam C++, anda boleh menggunakan blok try
dan catch
untuk mengendalikan pengecualian yang dilemparkan dalam fungsi. try
和 catch
块来处理函数中引发的异常。
try/catch 块的工作原理
try
块用于包含可能引发异常的代码。如果 try
块中的代码成功执行,则直接跳到紧随其后的代码行中。如果 try
块中的代码引发异常,则控制权将传递给相应的 catch
块。
catch
块用于处理特定类型的异常,并且它后面总是紧跟类型限定符。例如,以下代码片段会处理 std::exception
类型的所有异常:
try { // 可能引发异常的代码 } catch (const std::exception& e) { // 处理异常 }
实战案例
假设我们有一个函数 read_file()
,它从文件中读取数据。该函数可能会引发 std::ifstream::failure
异常,如果文件不存在或无法读取。以下代码片段演示了如何使用 try
和 catch
块来处理该异常:
void read_file(const std::string& filename) { std::ifstream file(filename); // 文件读取操作可能会引发 std::ifstream::failure 异常 try { // 读文件操作 } catch (const std::ifstream::failure& e) { std::cerr << "读取文件失败: " << e.what() << std::endl; } }
在这种情况下,如果 read_file()
函数无法成功读取文件,程序将打印错误消息并继续执行。
注意:
try
块可以有多个 catch
块,每个 catch
块用于处理不同的异常类型。try
块中的代码未引发异常,则不会执行任何 catch
try
berjaya dilaksanakan, lompat terus ke baris kod yang mengikuti serta-merta. Jika kod dalam blok try
melemparkan pengecualian, kawalan diserahkan kepada blok catch
yang sepadan. 🎜🎜Blok catch
digunakan untuk mengendalikan pengecualian jenis tertentu dan ia sentiasa diikuti oleh kelayakan jenis. Sebagai contoh, coretan kod berikut mengendalikan semua pengecualian jenis std::exception
: 🎜rrreee🎜🎜Kes Sebenar 🎜🎜🎜Andaikan kita mempunyai fungsi read_file()
yang bermula daripada Baca data daripada fail. Fungsi ini mungkin menimbulkan pengecualian std::ifstream::failure
jika fail tidak wujud atau tidak boleh dibaca. Coretan kod berikut menunjukkan cara menggunakan blok try
dan catch
untuk mengendalikan pengecualian ini: 🎜rrreee🎜Dalam kes ini, jika read_file()
The fungsi tidak berjaya membaca fail, program mencetak mesej ralat dan meneruskan pelaksanaan. 🎜🎜🎜Nota:🎜🎜try
boleh mempunyai berbilang blok catch
, setiap blok catch
digunakan untuk memproses Pengecualian yang berbeza jenis. 🎜🎜Jika kod dalam blok try
tidak memberikan pengecualian, tiada blok catch
akan dilaksanakan. 🎜🎜Jika pengecualian yang tidak dikendalikan terlepas daripada fungsi, program akan ditamatkan melainkan terdapat pengendali yang tidak ditentukan. 🎜🎜Atas ialah kandungan terperinci Bagaimanakah blok cuba/tangkap dalam pengendalian pengecualian fungsi C++ berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!