programing

시작과 끝 블록 없이 루비에서 구조를 어떻게 사용합니까?

goodsources 2023. 6. 20. 21:36
반응형

시작과 끝 블록 없이 루비에서 구조를 어떻게 사용합니까?

나는 표준 기술을 알고 있습니다.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

반응형