C++ 함수 내 람다 함수를 통해 코드 정리

#include <iostream>
using namespace std;

void test() {
	int a = 1;
	int b = 2;

	auto func1 = [&]() {
		if (a == 1) {
			throw std::runtime_error("a = 1");
		}
		cout << "func1 success" << endl;
	};

	auto func2 = [&]() {
		if (b == 2) {
			throw std::runtime_error("b = 2");
		}
		cout << "func2 success" << endl;
	};

	try {
		func1();
		func2();
	}
	catch (std::exception& ex) {
		cout << "test failed - " << ex.what() << endl;
		return;
	}
}

void main() {
	test();
}

하나의 작업을 수행하는 함수 내에서도 다양한 추상화 수준의 코드들이 존재할 수 있기 때문에 이들을 다시 람다 함수로 분리하여 코드 가독성을 높이고, 람다 함수들을 try-catch 문에서 한번에 실행함으로써 오류 처리와 가독성을 높일 수 있습니다.