예지력
W
예지력

블로그 메뉴

  • 문의 & 피드백
  • GitHub
  • 분류 전체보기
    • 주식
    • 파생상품
    • crypto
      • 차트에 현대미술
      • 복기
      • 시스템 트레이딩
      • 기술적 분석
      • 블록체인
      • 생각
      • 리서치
      • Token Engineering
    • 이더리움 | ETH
      • 리서치
    • 테라 | LUNA
      • Tefi
      • 루나 LUNA
      • 아스트로포트 Astro
      • 앵커 프로토콜 ANC
      • 미러 프로토콜 MIR
      • 아폴로 다오 APOLLO
      • 프리즘 프로토콜 PRISM
      • 넥서스 프로토콜 NEXUS
      • 레바나 프로토콜 LEV
      • 마스 프로토콜 MARS
      • 더비 스타즈 Derby Stars
    • 프로그래밍
      • AHK 메뉴얼
      • AHK 레퍼런스
      • Delphi XE7
      • C
      • Python
      • Reversing
      • Archive
    • 일상
    • 영화
    • 낙서장
    • Deprecated
      • 로다 플레이어
      • 어의

인기 글

최근 댓글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
예지력

W

[문법] Try, Catch
프로그래밍/AHK 레퍼런스

[문법] Try, Catch

2015. 2. 18. 17:51

 

함수를 Try 하고, 예외발생시 에러코드를 Throw 하고 Exception 을 Catch 한다.

 

Try 는 알고리즘을 구성할때 굉장히 중요하고, 필수적인 문법입니다. 이미지서치할때 ErrorLevel 을 확인하죠?

에러레벨을 반환하는 과정이 바로 Try하고 Catch 하는 과정입니다.

 

기본적인 Try, Catch 코드를 확인해보겠습니다.

 

try  ; 함수를 시도한다
{
    HelloWorld()
    MakeToast()
}
catch e  ;try 함수의 Exception 을 관리합니다
{
    MsgBox, Exception 이 Throw 되었습니다 `nThrow된 함수: %e%
    Exit
}

HelloWorld()  ; 항상 성공하는 함수, Exception 이 없습니다
{
    MsgBox, 안녕하세요!
}

MakeToast()  ; 항상 실패하는 함수, Exception 이 생성됩니다
{
    ; try 부분의 Catch 함수로 점프
    throw A_ThisFunc " 가 실패하였습니다."
} 

 

Try와 Catch 기본.ahk

 

Try  함수를 실행하는 부분입니다. 위 코드에서는 HelloWorld() 와  MakeToast() 라는 2개의 함수를 실행했습니다.

Throw : Exception 을 던져줍니다. 위 코드에서는 MakeToast() 함수가 Throw 했습니다.

Catch : Exception 즉 , 예외를 받습니다. Throw를 받아와 정보를 얻습니다. 위 코드에서는 A_ThisFunc " 가 실패하였습니다." 라는 예외를 받았습니다.

 

주석을 달았으니 알고리즘에 대한 이해는 어느정도 되실거라 예상합니다. 그러면 구체적으로 Try 와 Catch 에 대해 설명해볼게요

 

Try는 블럭 { } 으로 감싸주어야합니다.

 

try {
    ...
} catch e {
    ...
}

 

 

Catch 는 아래와 같습니다.

 

Catch [, 저장할변수]
{
     ...
}

 

저장할변수는 생략이 가능한데, 변수설정시에는 아래 5가지의 정보가 오브젝트로 저장됩니다.

What : 명령 또는 실행된 함수 또는 에러가 실행된 때에 대한 이름

File : 에러가 발생한 스크립트 파일의 경로

Line : 에러가 발생한 곳의 줄 번호

Message : 에러 메세지 또는 ErrorLevel 값

Extra : 에러에 대한 부가적인 설명

 

Try, Catch 구문을 사용하는 이유는 코드를 작성할때, 모든 경우의 알고리즘을 작성할 것이 아니기 때문입니다.

또한 에러레벨보다 다양하게 예외의 상황에 대처하게끔 만들수있기 떄문이죠.

Try , Catch 구문을 통해 정교한 프로그램을 만드시기 바랍니다!

 

try
{
    obj := ComObjCreate("ScriptControl")
    obj.ExecuteStatement("MsgBox ""내장 VBScript""")
    obj.InvalidMethod() ; 런타임 에러를 발생시킴
}
catch e
{
    ; For more detail about the object that e contains, see Catch.
    MsgBox, 16,, % "Exception이 throw되었습니다!`n`nwhat: " e.what "`nfile: " e.file
        . "`nline: " e.line "`nmessage: " e.message "`nextra: " e.extra
}

 

Catch 에러레벨.ahk

728x90
저작자표시 비영리 동일조건

'프로그래밍 > AHK 레퍼런스' 카테고리의 다른 글

함수 Function 에 대한 이해  (5) 2015.11.08
[명령어] FileInstall 파일을 경로에 설치한다  (4) 2015.02.06
[명령어] Goto, Gosub 특정지점으로 점프하기  (0) 2015.01.17
[문법] 변수와 표현 Variables, Expressions  (5) 2015.01.14
[명령어] If 조건문, 케이스분류하기  (6) 2015.01.13
    '프로그래밍/AHK 레퍼런스' 카테고리의 다른 글
    • 함수 Function 에 대한 이해
    • [명령어] FileInstall 파일을 경로에 설치한다
    • [명령어] Goto, Gosub 특정지점으로 점프하기
    • [문법] 변수와 표현 Variables, Expressions
    예지력
    예지력

    티스토리툴바