2010-02-27 7 views
0

예외 호출이 발생할 때마다 스크립트가 종료됩니다.오류 무시 및 루비 진행

각 작업을 수행해야합니까? 모든 코드 후, 또는 넣어 구조 무기 호 : 그것은

begin 
#someaction 

begin 
#someaction2 
rescue 
end 
rescue 
end 

답변

1

당신은 모든 (http://aquarium.rubyforge.org/ 수족관 등의) 예외 처리 코드와 메서드 호출을 둘러싸고 AOP 메커니즘의 일종을 사용할 수 있습니다 ..... 빠른 매우 복잡해진다 ,하지만 당신이 그렇게해야한다면 추측하고있다. 예외가 발생하면 실제로 앱의 예외적 인 상황을 알리는 것이 아니며 (나쁜 경우) 실제로해야 할 일이없는 상황에서도 계속 시도하려고한다. 그래서 (그것은 더욱 악합니다). 어쨌든 당신이 정말로해야 할 일을 다시 생각해 보라고 조언합니다. 왜냐하면 당신이 잘못된 방식으로 문제에 접근하고있는 것처럼 보입니다.

1

귀하의 프로그램이 무엇인지 모르기 때문에 특정 답변을하기가 어렵습니다.

그러나 일반적으로이 문제를 해결하는 가장 좋은 방법은 실패 할 수있는 코드를 하나 이상의 별도의 메서드에 넣는 것입니다.이 메서드 이름은이를 반영해야합니다.

여기에는 여러 가지 장점이 있습니다. 우선, 나머지 코드는 예외 처리를 통해 헷지 할 필요가 없다는 것을 의미합니다. 둘째, "위험한"작업을 신중하게 논리 그룹으로 분리하면 실제 작업이 아닌 해당 메서드에서 예외 처리를 수행 할 수 있습니다. 멍청한 예 :

my_list = get_list("one") # perfectly safe method 

my_list.each do |x| 
    begin 
     x.dangerous_file_method() # dangerous method 
    rescue 
     x.status = 1 
    end 
end