Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

RubyLanguage/ExceptionHandling: Difference between revisions

From ZeroWiki
imported>rabierre
No edit summary
(Repair batch-0003 pages from live compare)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[pagelist(^RubyLanguage)]]
<!-- MONIWIKI PageList(^RubyLanguage) -->
* [[RubyLanguage]]
* [[RubyLanguage/Class]]
* [[RubyLanguage/Container]]
* [[RubyLanguage/DataType]]
* [[RubyLanguage/ExceptionHandling]]
* [[RubyLanguage/Expression]]
* [[RubyLanguage/InputOutput]]
__TOC__
__TOC__


Line 15: Line 22:
** 예외가 발생하지 않으면 rescue는 실행되지 않는다.
** 예외가 발생하지 않으면 rescue는 실행되지 않는다.
   *사용법 : rescue 예외클래스명  
   *사용법 : rescue 예외클래스명  
** [http://enshahar.tistory.com/65 참고]
   rescue Exception
   rescue Exception
     # 예외 처리  
     # 예외 처리  
Line 34: Line 42:
= Exception Extend =  
= Exception Extend =  
** 예외 클래스를 상속하여 새로운 예외 클래스를 추가할 수 있다
** 예외 클래스를 상속하여 새로운 예외 클래스를 추가할 수 있다

Latest revision as of 00:29, 27 March 2026

Exception

  • 예외 클래스들은 Exception 클래스를 상속받는다.
    • 예외가 발생하면 예외 처리구문이 나올 때 까지 호출 스택을 타고 이동한다.
    • 계층도

Exception Handler

    • $! : 에러를 담는 전역 객체
    • rescue
    • 예외 처리 구문, rescue는 switch case문처럼 동작한다. 맞는 처리 구문을 찾을 때 까지 계속 매칭.
    • begin안에서 실행하다 예외가 발생하면 rescue 구문으로 컨트롤이 이동된다.
    • 예외를 처리후 다시 이전 코드로 돌아가고 싶다면 retry하면 된다.
    • 예외가 발생하지 않으면 rescue는 실행되지 않는다.
  *사용법 : rescue 예외클래스명 
 rescue Exception
   # 예외 처리 
 end
    • else
    • 예외가 발생하지 않았을 때 실행되는 코드블럭
    • ensure
    • 예외의 발생 유무와 상관없이 항상 실행되는 코드블럭
    • 자바의 finally와 같음
    • catch throw
    • 예외 처리의 다른 형태
    • 예외 발생시 throw를 이용해 예외를 발생시키고 catch에서 심볼을 이용하여 예외를 캐치한다.
    • throw에서 심볼(라벨)을 이용하면 중첩된 코드 구문을 바로 탈출할 수 있다.

Exception Raise

    • 예외 발생시키기
    • Kernal.raise(또는 Kernal.fail)로 예외를 발생시킨다

Exception Extend

    • 예외 클래스를 상속하여 새로운 예외 클래스를 추가할 수 있다