ASP/ADO.Net C# 실무 과정 자료] 예외 잡기 (try-catch)







ASP/ADO.Net C# 실무 과정 자료] 예외 잡기 (try-catch)

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


예외 잡기 (try-catch)


■ C#에서는 try-catch 구문을 이용한다.

try {

statements;

} catch (Exception object) {

error handle;

}


- try{} 안에서 예외 객체를 던진다.


- Catch (예외객체클래스 오브젝트) 구문을 써 주면 catch{ } 괄호안에서는 오브젝트를 이용해 처리할 수 있다.


- 관습적으로 오브젝트 이름은 e라고 쓴다.


- 예외가 발생하면 try 블록 내의 수행은 끝이 나고, 컨트롤이 바로 catch 블록으로 이동한다.

ASP/ADO.Net C# 실무 과정 자료] C#에서의 예외처리







ASP/ADO.Net C# 실무 과정 자료] C#에서의 예외처리

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


C#에서의 예외처리


■ 전통적 방법의 문제점

- 프로그램과 예외처리가 섞여있다.→서로 다른 컨트롤이 필요하다.


- 에러코드가 어떤 에러를 나타내는가? →직관적이지 못하다.


- 대형 프로젝트에서 일관된 방법을 쓰기 어렵다.



■ C#의 예외처리

- 처리를 담당하는 객체가 별도로 존재한다.


- System.Exception 객체를 상속받음. 예외 이름은 이름+Exception이다.

(*) CLS를 만족하는 모든 닷넷용 언어는 동일한 예외객체를 이용한다

ASP/ADO.Net C# 실무 과정 자료] 전통적인 예외 처리






ASP/ADO.Net C# 실무 과정 자료] 전통적인 예외 처리

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


전통적인 예외 처리


■ 전통적 방법

int errCode;

a=b; //예외가 발생할 만한 무언가를 실행

if errCode == 1 goto errHandle;


errHandle:

switch (errCode){

case 1:

}

→ 예외 상황에서 error flag등을 이용해서 예외를 처리한다.



ASP/ADO.Net C# 실무 과정 자료] 예외 (Exception)






ASP/ADO.Net C# 실무 과정 자료] 예외 (Exception)

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


예외 (Exception)


■ 예외

- 프로그램이 실행하는 동안에 발생될 수 있는 비정상적인 조건을 예외(Exception)라고 한다.


- 즉, 번역시의 에러가 아닌 실행시의 에러를 예외라고 한다.


- 예외가 발생하면 정상적이 프로그램 수행이 불가능 하다.


  Ex)

file I/O : 권한 없는 파일에 대한 접근

memory : 메모리 부족으로 인해 할당이 불가능

산술 에러: divide by zero, overflow




ASP/ADO.Net C# 실무 과정 자료] 인덱스와 배열 비교







ASP/ADO.Net C# 실무 과정 자료] 인덱스와 배열 비교


실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


인덱스와 배열 비교



ASP/ADO.Net C# 실무 과정 자료] 인덱서의 고급 사용







ASP/ADO.Net C# 실무 과정 자료] 인덱서의 고급 사용


실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


인덱서의 고급 사용


■ 다차원 인덱서가 가능하다.

public int this[int index1, int index2]



■ 인덱서의 index 형식이 정수형 뿐만 아니라, 문자열 및 다른 형식도 가능하다.

public int this[string index]

public int this[string index1, int index2]



■ 인덱서의 index 형식이 다른 경우 오버로딩 될 수 있다. 아래의 세 예제는 동시에 정의될 수 있다.

public int this[int index]

public int this[string index]

public int this[int index1, int index2]




ASP/ADO.Net C# 실무 과정 자료] 인덱서의 구현






ASP/ADO.Net C# 실무 과정 자료] 인덱서의 구현


실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.



인덱서의 구현



설명 )

■ 인덱서가 배열과 비슷해 보이기는 하나, 배열의 속성들 (length등) 을 가지고 있지는 않다. 


■ (1)에서 Length 프로퍼티를 지정해 준 것은 그것 때문이다.


■ (2)에서 인덱서를 정의하고 있다. index로 int 값을 가짐을 알 수 있다.


■ (3)(4)에서는 배열의 첨자 범위를 검사하는 구문이 추가되어 있다.


■ Main 메소드를 보면 MyIntArray 클래스 객체인 a가 배열과 흡사하게 사용됨을 알 수 있다.


ASP/ADO.Net C# 실무 과정 자료] 인덱서 선언






ASP/ADO.Net C# 실무 과정 자료] 인덱서 선언

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


인덱서 선언


class IntArray

{

public int[] myInt;

public int this[int index]

{

get{ return myInt[index]; }

set{ myArray[index] = value; }

}

}


■ 프로퍼티의 사용법과 거의 유사하다. get/set/value가 그대로 사용된다.


■ 프로퍼티와의 차이점은 this를 사용한다는 점과 배열 인덱스를 입력값으로 가진다는 점이다. 



+ Recent posts