예외 처리 기반 실행
5999 단어 Ruby
입문
이번에 제가 예외를 다시 배웠어요.
잊지 않기 위해 기술하다.
조금씩 이해하는 건 이번이 처음이야
예외 처리
코드를 실행할 때 오류가 발생했을 때 처리합니다.
원인을 조사하기 쉽다는 등 장점이 있다.
사용할 주요 기능
코드를 실행할 때 오류가 발생했을 때 처리합니다.
원인을 조사하기 쉽다는 등 장점이 있다.
사용할 주요 기능
간단한 것을 쓰다
절차를 이해하기 쉽도록'puts'로 번호를 매깁니다.puts 1
begin # エラーが起きそうなところをbeginで囲む
number = 0
answer = 100 / number
puts 2 # ↓ エラーが起きたら対応する内容をrescueに記述
rescue ZeroDivisionError => e # e変数に発生した例外を表すオブジェクトが代入
p e #=> <ZeroDivisionError: divided by 0>
ensure # エラーが発生しても実行する
puts 3
end
puts 4
# 動きは 1 → 3 → 4
(변수가'e'가 아니어도 상관없다.)
이상이 발생하면 즉시 처리하지 않고rescue 처리로 넘어갑니다.**例外ハンドラ**
이상한rescue 블록에 대응하는 부분
rescue의 출력도 다음과 같은 출력이 있습니다.("p e
"장소
묘사
컨텐트 내보내기
p "0 으로 나누면 안 됨"(출력하려는 내용 기술)
"0으로 나누면 안 돼요".
p e.class
ZeroDivisionError
p e.class.superclass
StandardError
p e.message
"divided by 0"
p e.backtrace
["exception.rb:23:in /'", "exception.rb:23:in
'"]
stdERR.puts'0이야!!!'
'0이다!!!'(표준 출력으로 내보내기 오류)
이렇게 기술하면 각양각색의 정보를 볼 수 있다.
이상 처리 동작을 관찰하다
호출 시 이상을 포착할 수 있습니다.def test_exception(number)
puts 2
begin
puts 3
answer = 100 / number # ここで例外が発生!!
return answer
puts 4
rescue ZeroDivisionError => e
puts 5
raise e
end
puts 6
end
puts 1
begin
answer = test_exception(0)
puts 7
rescue ZeroDivisionError => e
puts 8
p e # 最後に実行される
end
# 動きは 1 → 2 → 3 → 5 → 8 → #<ZeroDivisionError: divided by 0>
발생한 이상은 자동으로 호출자에게 전달됩니다.(반환)
rescue 블록에서raise를 사용하여 고의로 발생하고 발생하는 호출자로 되돌릴 수 있습니다.
예외 처리 상속 관계
예외적인 반이 많다.
여기에 상세한 내용이 있다이상 클래스 참조
참고: 이토 순일.전문가를 대상으로 하는 루비 입문 언어 규격부터 테스트 구동 개발·디버깅 기술까지
예제
rescue 부분을 설명할 때 주의해야 할 것이 있습니다.begin
number = 0
answer = 100 / number
rescue Exception => e
puts "予期せぬエラーが発生しました"
p e
rescue ZeroDivisionError => e
puts "0ですよ!!"
p e
end
#=> 予期せぬエラーが発生しました
#=> #<ZeroDivisionError: divided by 0>
Exception은 모든 초클래스 (부류) 이기 때문에 두 번째rescue를 실행하지 않고 오류를 포착하여 첫 번째 Exception의 오류 문장을 출력합니다.
...그래서 원하는 글을 출력하고 싶을 때.
rescue 순서 주의
총결산
이번에는 이런 느낌으로 공부했어요.
다음에 좀 더 깊이 파고 싶어요.
Reference
이 문제에 관하여(예외 처리 기반 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sumiiii/items/3fd7fc238eaa26f17f46
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
puts 1
begin # エラーが起きそうなところをbeginで囲む
number = 0
answer = 100 / number
puts 2 # ↓ エラーが起きたら対応する内容をrescueに記述
rescue ZeroDivisionError => e # e変数に発生した例外を表すオブジェクトが代入
p e #=> <ZeroDivisionError: divided by 0>
ensure # エラーが発生しても実行する
puts 3
end
puts 4
# 動きは 1 → 3 → 4
호출 시 이상을 포착할 수 있습니다.
def test_exception(number)
puts 2
begin
puts 3
answer = 100 / number # ここで例外が発生!!
return answer
puts 4
rescue ZeroDivisionError => e
puts 5
raise e
end
puts 6
end
puts 1
begin
answer = test_exception(0)
puts 7
rescue ZeroDivisionError => e
puts 8
p e # 最後に実行される
end
# 動きは 1 → 2 → 3 → 5 → 8 → #<ZeroDivisionError: divided by 0>
발생한 이상은 자동으로 호출자에게 전달됩니다.(반환)rescue 블록에서raise를 사용하여 고의로 발생하고 발생하는 호출자로 되돌릴 수 있습니다.
예외 처리 상속 관계
예외적인 반이 많다.
여기에 상세한 내용이 있다이상 클래스 참조
참고: 이토 순일.전문가를 대상으로 하는 루비 입문 언어 규격부터 테스트 구동 개발·디버깅 기술까지
예제
rescue 부분을 설명할 때 주의해야 할 것이 있습니다.begin
number = 0
answer = 100 / number
rescue Exception => e
puts "予期せぬエラーが発生しました"
p e
rescue ZeroDivisionError => e
puts "0ですよ!!"
p e
end
#=> 予期せぬエラーが発生しました
#=> #<ZeroDivisionError: divided by 0>
Exception은 모든 초클래스 (부류) 이기 때문에 두 번째rescue를 실행하지 않고 오류를 포착하여 첫 번째 Exception의 오류 문장을 출력합니다.
...그래서 원하는 글을 출력하고 싶을 때.
rescue 순서 주의
총결산
이번에는 이런 느낌으로 공부했어요.
다음에 좀 더 깊이 파고 싶어요.
Reference
이 문제에 관하여(예외 처리 기반 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sumiiii/items/3fd7fc238eaa26f17f46
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
rescue 부분을 설명할 때 주의해야 할 것이 있습니다.
begin
number = 0
answer = 100 / number
rescue Exception => e
puts "予期せぬエラーが発生しました"
p e
rescue ZeroDivisionError => e
puts "0ですよ!!"
p e
end
#=> 予期せぬエラーが発生しました
#=> #<ZeroDivisionError: divided by 0>
Exception은 모든 초클래스 (부류) 이기 때문에 두 번째rescue를 실행하지 않고 오류를 포착하여 첫 번째 Exception의 오류 문장을 출력합니다....그래서 원하는 글을 출력하고 싶을 때.
rescue 순서 주의
총결산
이번에는 이런 느낌으로 공부했어요.
다음에 좀 더 깊이 파고 싶어요.
Reference
이 문제에 관하여(예외 처리 기반 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sumiiii/items/3fd7fc238eaa26f17f46
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(예외 처리 기반 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sumiiii/items/3fd7fc238eaa26f17f46텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)