cpp_exception - 8BitsCoding/RobotMentor GitHub Wiki
- C++λ μμΈλ₯Ό μ§μνλ€.
- νμ§λ§ C++μ μμΈμ μ€μμ±μ μ‘°κΈ λ¨μ΄μ§λ€.
- μ¬λ°λ₯Έ μ¬μ©λ² μ€μ¬μΌλ‘ μ΄ν΄λ³΄μ.
μμΈ λ°μ μ¬λ‘
// λ²μ μ΄ν
int main()
{
std::string myCatName = "CoCo";
try
{
char ch = myCatName.at(5);
}
catch (const std::out_ofrange& e)
{
std::cerr << "out of range: " << e.what() << std::endl;
}
catch(const std::exception& e)
{
std::cerr << "exception: " << e.what() << std::endl;
}
return 0;
}
// λ€μκ³Ό κ°μ λ°©λ²μΌλ‘λ ν΄κ²°μ΄ κ°λ₯νλ€.
std::string myCatName = "CoCo";
const size_t INDEX = 5;
if(INDEX < myCatName.size())
{
char ch = myCatName.at(INDEX);
}
μμΈλ λ΄κ° 컨νΈλ‘€ ν μ μλ μν©μ μμΈλΌκ³ νμ§ μλ? μ μν©μ κ³Όμ° μμΈμ²λ¦¬λΌ ν μ μλκ°?
μμΈ λ°μ μ¬λ‘2
// 0μΌλ‘ λλκΈ°
int number1 = 0;
int number2 = 0;
// μ¬κΈ°μ 0μ΄ λ€μ΄μ¨λ€λ©΄?
std::cin >> number1 >> number2;
try
{
int result = number1 / number2;
}
catch(const std::exception& e)
{
std::cerr << "excetion: " << e.what() << std::endl;
}
// μμ μμΈκ° νμνλ μΆλ€..?
if(number2 != 0)
{
int restul = number1 / number2;
}
μμΈ λ°μ μ¬λ‘3
// NULL μ°Έμ‘°
Cat* myCat = nullptr;
try
{
const char* myCatName = myCat->GetName();
}
catch(const std::exception& e)
{
std::cerr << "exception: " << e.what() << std::endl;
}
// μμ μμΈκ° νμνλ μΆλ€..?
if(myCat != NULL)
λλΆλΆμ μμΈλ λΆνμνλ€.
μ μ ν μμΈμ²λ¦¬
- μ ν¨μ± κ²μ¬/μμΈλ μ€μ§ κ²½κ³μμλ§
- λ°μμ μ€λ λ°μ΄ν°λ₯Ό μ μ΄ν μ μκΈ° λλ¬Έ
- μ) μΈλΆμμ λ€μ΄μ€λ μΉ μμ², νμΌ μ½κΈ°/μ°κΈ°, μΈλΆ λΌμ΄λΈλ¬λ¦¬ λ±
- μΌλ¨ μμ€ν
μ λ€μ΄μ¨ λ°μ΄ν°λ λ€ μ¬λ°λ₯΄λ€κ³ κ°μ£Όνμ
- ASSERTλ₯Ό μ¬μ©νμ¬ κ°λ° μ€ λ¬Έμ λ₯Ό μ‘μλ΄κ³ κ³ μΉ κ².
- μμΈ μν©μ΄ λ°μν λλ NULLμ λ₯λμ μΌλ‘ μ¬μ©ν κ²
- νμ§λ§ κΈ°λ³Έμ μΌλ‘ ν¨μκ° NULLμ λ°ννκ±°λ λ°λ μΌμ μμ΄μΌν¨
- μ½λ© νμ€μ λ§μ½ NULLμ λ°ννκ±°λ λ°λλ€λ©΄ ν¨μμ μ΄λ¦μ μ μ§μ κ².
// Example
string ReadFileOrNull(string filename)
// μμ κ°μ΄ νμΌμ΄λ¦μ nullμ λ₯λμ μΌλ‘ μ¬μ©νμ¬ errorκ° λ°μμ nullμ΄ λ¦¬ν΄λ¨μ μλ €μ€μΌν¨
{
// ASSERTλ₯Ό μ μ¨μΌνλ€.
ASSERT(filename != null);
if(!File.Exists(filename))
return null;
}
- μμΈλ λ§λ³ν΅μΉμ½μ΄ μλλ€.
- λμΌν νλ‘κ·Έλλ¨Έκ° λ‘μ§κ³Ό μμΈλ₯Ό λͺ¨λ μμ± * λ‘μ§μ΄ μλͺ»λΌ μλ€λ©΄, μμΈλ ν릴μ μλ€.
- μμ§μ μννΈμ¨μ΄λ μμΈκ° μλλΌ μ² μ ν ν μ€νΈ κ³νμμ λ§λ€μ΄μ§λ€λ μ μ κΈ°μ΅νμ.