60. μμΈ μ²λ¦¬νκΈ°(1)
μ±ν° 12 μμΈ μ²λ¦¬νκΈ°
μ΄ μ₯μ ν΅μ¬ κ°λ ꡬ쑰μ μμΈ μ²λ¦¬κ° 무μμΈμ§ μ΄ν΄νλ€
try~catch~finally λ¬Έμ μ΄μ©ν μμΈ μ²λ¦¬ λ°©λ²μ μ΅νλ€
System.Exception ν΄λμ€λ₯Ό μ΄ν΄νλ€
throw λ¬Έμ μ΄μ©νμ¬ μμΈλ₯Ό λμ§λ λ°©λ²μ μ΅νλ€
μ¬μ©μ μ μ ν΄λμ€λ₯Ό μ μνκ³ μ¬μ©νλ λ°©λ²μ μ΅νλ€
μμΈμ λνμ¬
μ μ: νλ‘κ·Έλλ¨Έκ° μκ°νλ μλ리μ€μμ λ²μ΄λλ μ¬κ±΄, μ΄κ²μ μμΈλΌκ³ λΆλ₯Έλ€.
μ1) μ«μκ° μ λ ₯λμ΄μΌ νλ λ³μμ λ¬Έμμ΄ μ λ ₯ μλ
μ2) νμΌμ μ μ₯μ νλλμ€ν¬ μ©λ μμ§
μμΈμ²λ¦¬ : νλ‘κ·Έλ¨μ μ€λ₯λ λ€μ΄μΌλ‘ μ΄μ΄μ§μ§ μλλ‘ μ μ νκ² μ²λ¦¬νλ κ²
using System;
using System.Collections;
using static System.Console;
namespace TryCatch
{
class MainApp
{
static void Main(string[] args)
{
int[] arr = { 1, 2, 3 };
for(int i=0; i<5; i++)
{
WriteLine(arr[i]);
}
WriteLine("μ’
λ£");
}
}
}

μλ¬΄λ° μμΈ μ²λ¦¬λ νμ§ μμκΈ° λλ¬Έμ νλ‘κ·Έλ¨μ΄ λ€μ΄λμλ€.

κΉμ§ μΆλ ₯λκ³ 15λΌμΈμμ iκ° 'λ°°μ΄μ ν¬κΈ° -1'μ λμ΄μ°κΈ° λλ¬Έμ μμΈλ₯Ό μΌμΌν€κ³ μ’ λ£λλ€. μ΄νμ μ½λλ€μ΄ μ€νλμ§ μμλ€. μμΈκ° λ°μν΄μ νλ‘κ·Έλ¨μ΄ μ’ λ£λμκΈ° λλ¬Έμ΄λ€.
μμΈ λ°μ: 'System.IndexOutOfRangeException'(Hello.exe)
μ²λ¦¬λμ§ μμ 'System.IndexOutOfRangeException' νμμ μμΈκ° Hello.exeμμ λ°μνμ΅λλ€.
μΈλ±μ€κ° λ°°μ΄ λ²μλ₯Ό λ²μ΄λ¬μ΅λλ€.
μ΄ μμ νλ‘κ·Έλ¨μ²λΌ μμΈλ₯Ό μ²λ¦¬νμ§ λͺ»ν΄ μ£½λ νλ‘κ·Έλ¨μ μ무리 κΈ°λ₯μ΄ λ§μλ μ λ’°ν μ μλ€. νλ‘κ·Έλλ¨Έλ μμ μ΄ μμ±ν μ½λ λ΄μμ μμΈκ° μ²λ¦¬λλλ‘ μ‘°μΉλ₯Ό μ·¨ν΄μΌ νλ€.
μμ μμ νλ‘κ·Έλ¨μμ λ°°μ΄μ΄ IndexOutOfRangeException μμΈλ₯Ό λμ‘λλ° Main()λ©μλκ° μ²λ¦¬νμ§ λͺ»νλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ μμΈλ₯Ό Main()λ©μλκ° 'λ°μΌλ©΄'λλ€. C#μμλ μμΈλ₯Ό λ°μ λ try~catchλ¬Έμ μ΄μ©νλ€.
try~catchλ‘ μμΈλ°κΈ°
try~catchλ ꡬ쑰μ μΌλ‘ μμΈ μ²λ¦¬λ₯Ό ν μ μκ² ν΄μ£Όλ λ¬Έλ²
try λΈλ‘μλ μ€ννκ³ μ νλ μ½λ, catch λΈλ‘μλ μμΈ λ°μμ μ²λ¦¬ν μ½λ μμ±
try
{
//μ€ννκ³ μ νλ μ½λ
}
catch(μμΈ κ°μ²΄_1)
{
//μμΈκ° λ°μνμ λμ μ²λ¦¬
}
catch(μμΈ κ°μ²΄_2)
{
//μμΈκ° λ°μνμ λμ μ²λ¦¬
}
try μ μ μ½λ λΈλ‘μλ μμΈκ° μΌμ΄λμ§ μμ κ²½μ°μ μ€νλμ΄μΌ ν μ½λλ€μ΄ λ€μ΄κ°κ³ ,
catch μ μλ μμΈκ° λ°μνμ λμ μ²λ¦¬ μ½λκ° λ€μ΄κ°λ€.
try: μλνλ€
catch : μ‘λ€ λλ λ°λ€ λΌλ λ»
try μ μμ μλ μ€ννκ³ μ νλ μ½λλ₯Ό μ μ²λ¦¬ν΄λκ°λ€κ° μμΈκ° λμ Έμ§λ©΄ catch λΈλ‘μ΄ λ°μλΈλ€.
μ΄λ catchμ μ try λΈλ‘μμ λμ§ μμΈ κ°μ²΄μ νμμ΄ μΌμΉν΄μΌ νλ€. κ·Έλ μ§ μμΌλ©΄ λμ Έμ§ μμΈλ μ무λ λ°μ§ λͺ»ν΄ 'μ²λ¦¬λμ§ μμ μμΈ'λ‘ λ¨κ² λλ€. λ§μ½ try λΈλ‘μμ μ€ννλ μ½λμμ μ¬λ¬ μ’ λ₯μ μμΈλ₯Ό λμ§ κ°λ₯μ±μ΄ μλ€λ©΄, μ΄λ₯Ό λ°μλΌ catch λΈλ‘λ μ¬λ¬κ°λ₯Ό λ μ μλ€.
μμ μμ μ
try~catch λ¬Έμ μ¬μ©ν΄λ³΄λλ‘ νλ€.
μμΈλ₯Ό μμ νκ² λ°μ μ²λ¦¬νκ³ νλ‘κ·Έλ¨μ μ’ λ£μν€λλ‘ μμ νλ€.
try~catch λ¬Έμ μ΄μ©ν΄μ μλͺ»λ μΈλ±μ€λ₯Ό ν΅ν΄ λ°°μ΄μ μμμ μ κ·Όν λ μΌμ΄λλ IndexOutOfRangeException μμΈλ₯Ό μμ νκ² λ°μ μ²λ¦¬νλ€.
using System;
using System.Collections;
using static System.Console;
namespace TryCatch
{
class MainApp
{
static void Main(string[] args)
{
int[] arr = { 1, 2, 3 };
try
{
for(int i=0; i<5; i++)
{
WriteLine(arr[i]);
}
}
catch (IndexOutOfRangeException e)
{
WriteLine($"μμΈκ° λ°μνμ΅λλ€. : {e.Message}");
}
WriteLine("μ’
λ£");
}
}
}
iκ° 3μ΄ λλ©΄ IndexOutOfRangeException κ°μ²΄κ° λμ Έμ§κ³ catch λΈλ‘μ΄ μ΄λ₯Ό λ°μλΈλ€.


νΉν catch λ¬Έμ μμ κ°μ΄ 볡μκ°λ‘ μΈ μ μλ€. λ€μν μμΈ μν©μ λμνκΈ° μν΄μμ΄λ€.