More actions
imported>rabierre No edit summary |
(Repair batch-0003 pages from live compare) |
||
| (5 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
<!-- MONIWIKI PageList(^RubyLanguage) --> | |||
* Exception | * [[RubyLanguage]] | ||
* [[RubyLanguage/Class]] | |||
* [[RubyLanguage/Container]] | |||
* [[RubyLanguage/DataType]] | |||
* [[RubyLanguage/ExceptionHandling]] | |||
* [[RubyLanguage/Expression]] | |||
* [[RubyLanguage/InputOutput]] | |||
__TOC__ | |||
= Exception = | |||
* 예외 클래스들은 Exception 클래스를 상속받는다. | |||
** 예외가 발생하면 예외 처리구문이 나올 때 까지 호출 스택을 타고 이동한다. | ** 예외가 발생하면 예외 처리구문이 나올 때 까지 호출 스택을 타고 이동한다. | ||
** [http://lambert.tistory.com/168 계층도] | ** [http://lambert.tistory.com/168 계층도] | ||
= Exception Handler = | |||
** $! : 에러를 담는 전역 객체 | ** $! : 에러를 담는 전역 객체 | ||
** rescue | ** rescue | ||
| Line 12: | Line 22: | ||
** 예외가 발생하지 않으면 rescue는 실행되지 않는다. | ** 예외가 발생하지 않으면 rescue는 실행되지 않는다. | ||
*사용법 : rescue 예외클래스명 | *사용법 : rescue 예외클래스명 | ||
** [http://enshahar.tistory.com/65 참고] | |||
rescue Exception | rescue Exception | ||
# 예외 처리 | # 예외 처리 | ||
| Line 25: | Line 36: | ||
** throw에서 심볼(라벨)을 이용하면 중첩된 코드 구문을 바로 탈출할 수 있다. | ** throw에서 심볼(라벨)을 이용하면 중첩된 코드 구문을 바로 탈출할 수 있다. | ||
= Exception Raise = | |||
** 예외 발생시키기 | ** 예외 발생시키기 | ||
** Kernal.raise(또는 Kernal.fail)로 예외를 발생시킨다 | ** Kernal.raise(또는 Kernal.fail)로 예외를 발생시킨다 | ||
= Exception Extend = | |||
** 예외 클래스를 상속하여 새로운 예외 클래스를 추가할 수 있다 | ** 예외 클래스를 상속하여 새로운 예외 클래스를 추가할 수 있다 | ||
Latest revision as of 00:29, 27 March 2026
- RubyLanguage
- RubyLanguage/Class
- RubyLanguage/Container
- RubyLanguage/DataType
- RubyLanguage/ExceptionHandling
- RubyLanguage/Expression
- RubyLanguage/InputOutput
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
- 예외 클래스를 상속하여 새로운 예외 클래스를 추가할 수 있다