오토핫키 커뮤니티

조회 수 3109 추천 9 댓글 106

https://i.imgur.com/mDzcCcG.png


함수를?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??함수를 실행하는 부분입니다. 위 코드에서는 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
{
??? 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
}

?

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

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

else if 적어가면서 코드의 길이를 늘릴?필요도없고요.

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


원본 글 http://me2.do/xgMrmkRX


  • profile
    테스하자 2015.02.18 20:11
    프로그래밍을 배워본적이 없는 입장에서 솔직히 말이 좀 어렵습니다. 무슨이야기인지는 알겠지만 초보입장에서도 이해하기쉬운 용어나 문장으로 해주시면 더 좋겠습니다. 물론 제입장에서 입니다만...

    좀더 전문적인 강좌를 올려주시는분이 늘어서 기쁘군요
  • profile
    예지력1 2015.02.18 20:25

    글재주가 없어 노력하고 있지만 잘 쓰기가 어렵네요ㅜㅜ 더 노력해야겠습니다.


    아래의 예를 보시면?예외와 Catch 에 대해 이해하실수있으실꺼에요


    try
    {
    ??? FileCopy, %A_MyDocuments%\*.txt, D:\Backup\Text documents
    ??? FileCopy, %A_MyDocuments%\*.doc, D:\Backup\Text documents
    ??? FileCopy, %A_MyDocuments%\*.jpg, D:\Backup\Photos
    }
    catch
    {
    ??? MsgBox, 16,, 에러가 발생했습니다!
    }


    ActiveX 로 웹자동화쪽으로 가거나, 에러메시지가 발생해도 무시하면서 작업을 하고싶을때 Try, Catch 구문을 사용하곤 하는데요, 특히 오류가 빈번하게 발생하는 ActiveX 에서 Try가 얼마나 효율적인지 다음에 알려드릴게요!

  • profile
    외치기 2015.02.18 22:53

    두달전쯤 오토핫키에 try catch가 있다는걸 알았을때는 되게 행복했는데 막상 안쓰게되더군요.

  • profile
    예지력1 2015.02.18 23:09
    ErrorLevel 이라는 너무나 편리한 내장변수가 있어서일까요 ..ㅋㅋ
  • 춘혈 2015.02.20 01:42

    언제나 많이 배워갑니다 ㅠ

  • 개가똥을참냐 2015.02.20 13:21

    항상 좋은글 감사합니다.

  • profile
    Kasuhm 2015.02.22 01:01

    오토핫키를 공부하진 않았지만 설명이 깔끔해서 바로 이해가요

    혹시나 오토핫키 공부하려면 어떤걸 공부해야할까요 ????

    c언어, c++, 자바까진 어느정도 이해했구요..... 이제 다른 OOP 공부하기 전에 좀 쉬려구요 ㅎㅎ...


  • profile
    Kasuhm 2015.02.22 01:03
    참고로 독학중입니다....
    전공이랑 관련이 크게 있진 않아서 시간날때마다 하고있는데
    공부할 방향을 못잡겠네요 ㅠㅠㅠㅠ
  • profile
    예지력1 2015.02.22 13:05
    저도 컴퓨터 독학하는 문과생입니다 ㅋㅋ;
    C,C++ 까지 아셨다면 오토핫키는 정말 쉬울실꺼에요. 일단 만들고자 하는 프로그램이 있으시면 알고리즘에 사용될 명령어를 하나하나 배워가시는게 좋을듯하네요. 국내엔 좀 전문적인 오토핫키글이 없는건 사실이지만요.
    그리고 오토핫키도 객체지향까진 아니지만 객체언어에요!
  • nuno12 2015.02.23 02:21

    좋은 정보 감사합니다.

  • profile
    GOLD 2015.03.02 00:40

    감사합니다만..뭔소린지모르겟네요 ㅠ

  • 모바일킹왕짱 2015.03.06 14:57

    강좌 항상 잘 보고있어요~덕분에 무리없이 공부하고 있네요.

    그런데 제가 스크립트를 게임 오토 위주로 구성하다보니 ㅠㅠ

    비활성 클릭, 비활성 이미지서치 같은게 필요한데...

    굉장히 어려운 부분이라 들었습니다.

    혹시 이에 대한 강의는 계획에 있으신지요 ?

  • profile
    예지력1 2015.03.06 19:32
    아뇨, 제가 게임을 하지않아서 관련된 주제로 게임에 적용하는 예를 보여드리진 못할꺼같네요
    비활성에 대한 명령어와 추가적인 함수에 대한 글을 쓸지도 모르겠습니다
  • 통통푸푸 2015.03.18 08:22

    어렵군요 ㅜㅜ

  • 이리온 2015.03.18 12:56

    좋은정보 감사합니다

  • 추상 2015.04.08 00:48

    잘보았습니다.

  • 곶구마 2015.04.09 20:46

    오토핫키에도 예외처리문이 있었내요~ 잘보고 갑니다

  • 안양백알 2015.04.12 08:45

    어렵네요...^^;

  • 혈마대사 2015.04.18 21:51

    감사합니다.

  • 짖고장땡 2015.04.24 14:01

    어렵긴어렵네요 ㅜㅜ

  • 스마트찬 2015.04.29 20:37

    감사해요 예지력님

  • 빵삼이 2015.05.09 01:13

    항상 좋은글 감사합니다.

  • 쎄놔 2015.05.09 17:32

    감사합니다~~

  • 배냐민 2015.05.15 18:45

    놀랍군요 ㅎ

  • 호랭지니 2015.05.16 18:16

    도움이 되네요 감사

  • 사랑에지치다 2015.05.21 20:01

    감사합니다 대단하시네요

  • CROBA 2015.06.02 12:15

    오핫키도 트라이 캐치가 있군여 ㅋㅋ

  • awds22 2015.06.02 22:59

    감사합니다

  • 라츠엘 2015.06.09 20:29

    좋은 강의 감사 드립니다^^

  • 천국의악마 2015.06.22 13:05

    이거 독학으로 가능하겠죠???

  • 프리니바투스 2015.06.24 10:12

    좋은 글 감사합니다^^

  • 하민 2015.06.25 12:32

    어렵네요 ㅎㅎ 고맙습니다.

  • 루카스 2015.06.29 08:33

    감사합니다.?

  • 스이부엉꺼 2015.07.08 15:15

    와뭐지이건.......ㅋㅋ학교온기분이다....ㅋㅋ

  • 악마도우미 2015.08.04 18:29

    몰랐던 문법 잘 배워 갑니다

  • 르샤미르 2015.08.13 15:56

    영어 문법도 싫어하는 제가 오토핫키 문법은 보고 배울려고 노력하네요.. ㅋ

  • alstj222 2015.08.28 03:49

    어렵당.. ㅠㅠ

  • profile
    와이로 2015.09.04 19:17

    추천하고 갑니다. 제가 오핫하면서 예외코드를 잘 안썼는데 이제 쓰는 버릇을 들여야겠네요

  • profile
    dfag 2015.09.14 20:56

    너무 어려워서 먼 말인지 모르겠당!!!!!!

  • 석빡귀 2015.09.21 04:11

    좋은글 감사합니다

  • 농부김씨 2015.09.24 13:12

    감사합니다. ㅠㅠ

  • 크런키 2015.10.12 19:59

    감사합니다

  • 최원태 2015.10.25 11:01
    크런키라니 제가 아는 그 크런키 길드는 아니겠지요
  • 싸이즈나와 2015.11.13 23:38

    유용한 자료 감사합니다 ㅎㅎ

  • 반동인 2015.11.14 02:05

    좋은글 감사합니다

  • i7h070 2016.01.14 19:50

    한번 해봐야 겠군요 감사합니다.

  • ndism 2016.03.02 13:42

    어려운 변수....

  • 폭시스 2016.04.06 14:43

    감사합니다!

  • 두룰재댜 2016.04.08 16:51

    으으 처음 배우려니 어렵네요 ㅋㅋ 좋은 글 감사합니다.

  • Vesper 2016.05.15 00:26

    어렵지만,,, 감사합니다!


전체 최신 인기글

전체 주간 인기글