C++错误处理就像看病:小病(如感冒)用返回值自理;大病(如心脏病)才需异常"急诊"。精髓在于——按错误严重程度选择策略,别把感冒当心脏病治。
【代码演示】
#include <iostream>#include <stdexcept>#include <string>// 🤧 小病:用返回值处理class MedicineCabinet {public: enum class ColdRemedy { SUCCESS, NO_MEDICINE }; ColdRemedy treatCold() { if (hasMedicine()) { std::cout << "💊 吃感冒药,自己处理\n"; return ColdRemedy::SUCCESS; } std::cout << "药箱没药了\n"; return ColdRemedy::NO_MEDICINE; }private: bool hasMedicine() { return true; }};// 🚑 大病:用异常处理class EmergencyRoom {public: void treatHeartAttack() { if (isCriticalCondition()) { throw std::runtime_error("💔 心脏病发作!需要急救!"); } }private: bool isCriticalCondition() { return true; }};// 🏥 医院系统:区分病情轻重class Hospital { MedicineCabinet cabinet; EmergencyRoom er;public: void handlePatient(const std::string& symptom) { if (symptom == "感冒") { // 小病:局部处理 auto result = cabinet.treatCold(); if (result == MedicineCabinet::ColdRemedy::NO_MEDICINE) { std::cout << "去买点药...\n"; } } else if (symptom == "心脏病") { // 大病:异常处理 try { er.treatHeartAttack(); } catch (const std::exception& e) { std::cout << "🚨 紧急情况: " << e.what() << "\n"; std::cout << "立即呼叫救护车!专业医生接管!\n"; } } }};int main() { std::cout << "=== 错误处理策略 ===\n"; Hospital hospital; std::cout << "处理感冒:\n"; hospital.handlePatient("感冒"); std::cout << "\n处理心脏病:\n"; hospital.handlePatient("心脏病"); std::cout << "\n关键:别把感冒送急诊,别让心梗自己扛!\n";}