반응형
시작과 끝 블록 없이 루비에서 구조를 어떻게 사용합니까?
나는 표준 기술을 알고 있습니다.begin <some code> rescue <rescue code> end
어떻게 그냥 사용할 수 있습니까?rescue
스스로 차단할 것인가요?
어떻게 작동하며 모니터링 중인 코드를 어떻게 알 수 있습니까?
메서드 "def"는 "시작" 문으로 사용될 수 있습니다.
def foo
...
rescue
...
end
인라인으로 복구할 수도 있습니다.
1 + "str" rescue "EXCEPTION!"
'Fixnum에 문자열을 강제로 입력할 수 없습니다.' 때문에 "EXECUMENT!"가 출력됩니다.
ActiveRecord 유효성 검사와 함께 def/rescue 조합을 많이 사용하고 있습니다.
def create
@person = Person.new(params[:person])
@person.save!
redirect_to @person
rescue ActiveRecord::RecordInvalid
render :action => :new
end
저는 이것이 매우 희박한 코드라고 생각합니다!
예:
begin
# something which might raise an exception
rescue SomeExceptionClass => some_variable
# code that deals with some exception
ensure
# ensure that this code always runs
end
여기서,def
로서begin
문:
def
# something which might raise an exception
rescue SomeExceptionClass => some_variable
# code that deals with some exception
ensure
# ensure that this code always runs
end
보너스! 다른 종류의 블록으로도 이 작업을 수행할 수 있습니다.예:
[1, 2, 3].each do |i|
if i == 2
raise
else
puts i
end
rescue
puts 'got an exception'
end
출력 위치irb
:
1
got an exception
3
=> [1, 2, 3]
언급URL : https://stackoverflow.com/questions/1542672/how-does-one-use-rescue-in-ruby-without-the-begin-and-end-block
반응형
'programing' 카테고리의 다른 글
LINQ에서 전체 텍스트 검색(FTS)을 사용할 수 있습니까? (0) | 2023.06.25 |
---|---|
텍스트 날짜/시간을 Excel의 실제 날짜 시간으로 변환 (0) | 2023.06.25 |
파이썬 if-else 단문 (0) | 2023.06.20 |
Xcode 편집기에서 글꼴 크기를 늘리는 방법은 무엇입니까? (0) | 2023.06.20 |
Chrome의 CSS 사용자 지정 스타일 단추에서 파란색 테두리 제거 (0) | 2023.06.20 |