Ruby에서 예외 처리
첫 번째 CLI 프로젝트 작업을 시작했을 때 많은 오류에 직면했고 대부분의 시간을 디버깅하는 데 보냈습니다. “프로그래밍의 절반만이 코딩입니다. 나머지 90%는 디버깅입니다.” ruby 문서를 파헤친 후, 유용한 키워드인 begin과 구조에 대해 알게 되었습니다.
Ruby의 "키워드"는 무엇입니까?
상쾌함을 드리겠습니다! 키워드나 예약어는 내부 프로세스를 위한 언어로 사용되므로 변수로 사용할 수 없습니다.
예를 들어:
#'if' and 'end' are keywords to check the condition of a given code.
#Here 'if' is checking some condition
if 2 > 1
puts "I love Ruby"
end # "I love Ruby"
#"if' cannot be used as a variable
#'if' has been already reserved by the ruby language
if = 2 # : syntax error, unexpected '=')
Ruby에는 많은 키워드가 있지만 시작 및 구조에 중점을 둘 것입니다. 예외 처리기라고도 합니다. 루비에서는 예외가 발생할 때마다 프로그램의 실행을 종료합니다. 여기에서 예외 처리기가 작동합니다. 오류 또는 예외를 발생시킬 수 있는 프로젝트의 코드는 begin…end 블록 안에 포함할 수 있으며, 이 오류를 처리하기 위해 복구 블록에 작성되는 코드가 뒤따릅니다.
def some_condition
puts 3/0
end
#=> divided by 0 (ZeroDivisionError)
위의 코드는 ZeroDivisonError를 제공합니다. 이 오류를 함께 처리합시다!
def some_condition
begin
puts 10/0
rescue
puts 10/2
end
end
some_condition #=> 5
예상대로 이 메서드는 5를 반환했습니다! 루비에서는 숫자를 0으로 나눌 수 없으므로 예외가 발생합니다. 그래서 우리는 시작 블록 안에 "문제가 있는"코드를 작성했습니다. 코드가 실행되었지만 프로그램이 중단되지는 않았습니다. 대신 복구 블록 아래에서 코드를 실행하고 좋은 답변을 반환했습니다! 휴, 실수 없이! 시작 블록 내부의 코드가 가능한 오류를 발생시키지 않으면 코드가 정상적으로 실행된다는 점을 명심하십시오. 구조는 오류가 있을 때만 실행됩니다!
프로그램이 복구된 후에도 오류 메시지를 보고 싶은 여러 가지 시나리오가 있을 것입니다. 작동 방식을 살펴보겠습니다. 이번에는 다른 예외가 있습니다.
def some_condition
puts "hello".even?
end
some_condition #=> in `some_condition': undefined method `even?' for "hello":String (NoMethodError)
프로그램을 중단하지 않고 여전히 오류 메시지를 인쇄해 봅시다.
def some_condition
begin
puts "hello".even?
rescue Exception => e #Exception object is being saved to a variable
puts "hello".length
puts e.message #prints the error message
end
end
some_condition
#=> 5
#=> undefined method `even?' for "hello":String
멋진! 오류를 성공적으로 처리했습니다! 프로그램을 복구하고 오류 메시지를 인쇄할 수 있었습니다. 그래서 우리는 여기서 정확히 무엇을 하고 있습니까? Exception 클래스를 변수 "e"에 저장했으며 이제 복구 블록에 오류 메시지를 인쇄할 수 있습니다. 우리는 이미 오류 유형을 알고 있으므로 다음과 같이 코드를 다시 작성할 수 있습니다.
def some_condition
begin
puts "hello".even?
rescue NoMethodError => e
puts "hello".length
puts e.message #prints the error message
end
end
#returns the same result
더 나은 이해를 위해 이 코드를 복사하여 붙여넣고 오류를 가지고 놀아보세요! 행복한 오류 처리!
Reference
이 문제에 관하여(Ruby에서 예외 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/saimaar/handling-exceptions-in-ruby-45b3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)