예외 후 Try
블록을 계속 시도합니다.캐치 블록 후 계속하십시오.
Try
action1()
action2()
action3()
action4()
Catch
Log()
그리고 action2
에서 발견 된 오류가 캐치로 이동하는 경우, 로깅을하고 action3
, action4
계속;
내 말은
어떻게하면됩니까?
예외 후 Try
블록을 계속 시도합니다.캐치 블록 후 계속하십시오.
Try
action1()
action2()
action3()
action4()
Catch
Log()
그리고 action2
에서 발견 된 오류가 캐치로 이동하는 경우, 로깅을하고 action3
, action4
계속;
내 말은
어떻게하면됩니까?
당신은이 방법에 대한 매개 변수로 Action
를 사용할 수 있습니다
Public Shared Function TryAction(action As Action) As Boolean
Dim success As Boolean = True
Try
action()
Catch ex As Exception
success = False
Log()
End Try
Return success
End Function
지금이 작품 :
TryAction(AddressOf action1)
TryAction(AddressOf action2)
TryAction(AddressOf action3)
TryAction(AddressOf action4)
고전적인 방법은 여러 Try-Catch
사용 :
Try
action1()
Catch
Log()
End Try
Try
action2()
Catch
Log()
End Try
Try
action3()
Catch
Log()
End Try
Try
action4()
Catch
Log()
End Try
이 한번에 이동을/Block을 Action() 메소드에 넣는다. 이렇게하면 필요한 경우 각 메소드의 예외에 다르게 응답 할 수 있습니다.
Sub Main()
action1()
action2()
action3()
action4()
End Sub
Sub Action1()
Try
'' do stuff
Catch
Log()
End Try
End Sub
Sub Action2()
Try
'' do stuff
Catch
Log()
End Try
End Sub
Sub Action3()
Try
'' do stuff
Catch
Log()
End Try
End Sub
Sub Action4()
Try
'' do stuff
Catch
Log()
End Try
End Sub
여기에 예를 들어 사용하는 배열입니다 :
For Each a As Action In {New Action(AddressOf action1), New Action(AddressOf action2), New Action(AddressOf action3), New Action(AddressOf action4)}
Try
a.Invoke()
Catch ex As Exception
Log(ex)
End Try
Next
그것은 좋은 hwould, 그러나 때때로 나는하지 알려진 요소를 사용해야합니다. 나는 시도에서 foreach를 사용해야하고 catch에서 나는 try 블록으로 돌아가서 그것을 계속해야 함을 의미합니다. – Gabor85
@ Gabor85 :'catch'에서'try'로 돌아갈 수 없습니다. 당신이 할 수있는 것은'catch '('ReTryTenTimes'- 함수처럼) 후에'try'를 반복하는 것입니다. 이 방법으로도 할 수 있습니다. 예를 들면 다음과 같습니다.'Dim success = False Dim retries = 10 성공하지 못함 AndAlso 재시도 <10 success = TryAction (AddressOf action1) 성공하지 못하면 다시 시도 = + 1 End While' –