programing

환경이란 무엇입니까?Fail Fast?

javajsp 2023. 5. 20. 00:11

환경이란 무엇입니까?Fail Fast?

환경이란 무엇입니까?Fail Fast?

그것은 어떻게 유용합니까?

응용 프로그램을 종료하는 데 사용됩니다.이는 예외 블록에 걸리지 않고 애플리케이션을 즉시 종료하는 정적 방법입니다.

환경.FastFail(String)은 실제로 훌륭한 디버깅 도구가 될 수 있습니다.예를 들어, 여러분이 이상한 출력을 제공하는 애플리케이션을 가지고 있다고 가정해 보겠습니다.당신은 왜 그런지 전혀 모릅니다.당신은 그것이 틀렸다는 것을 알고 있지만, 당신을 돕기 위해 표면에 거품이 일고 있는 예외는 없습니다.Visual Studio 2005의 Debug->Exceptions에 액세스할 수 있는 경우메뉴 항목, Visual Studio에 이러한 첫 번째 기회 예외를 볼 수 있도록 요청할 수 있습니다.이 기능이 없으면 환경을 배치할 수 있습니다.예외적으로 빠른 실패(String)를 하고 연역적 추론과 제거 과정을 사용하여 문제가 어디에 있는지 확인합니다.

언급

또한 덤프 및 이벤트 뷰어 항목을 생성하므로 유용할 수 있습니다.

이는 예외를 발생시키지 않고 즉시 응용프로그램을 종료할 수 있는 방법입니다.

설명서는 여기에 있습니다.

일부 보안 또는 데이터 중요 컨텍스트에서 유용할 수 있습니다.

Failfast는 사용자의 데이터를 위험에 빠뜨릴 수 있는 상황에서 사용할 수 있습니다.예를 들어 데이터베이스 엔진에서 내부 데이터 구조의 손상을 감지할 경우 프로세스를 가능한 한 빨리 중지하여 데이터베이스에 가비지를 기록하지 않도록 하고 데이터베이스가 손상되어 사용자의 데이터가 손실될 위험이 있습니다.이는 FailFast가 유용한 가능한 시나리오 중 하나입니다.

또 다른 용도는 프로그래머 오류를 포착하는 것입니다.라이브러리를 작성 중이고 일부 함수가 어떤 상황에서도 null일 수 없는 포인터를 허용한다고 가정합니다. 즉, null일 경우 프로그래머 오류가 분명히 존재합니다.당신은 E_POINTER와 같은 오류를 반환하거나 InvalidArgument 예외를 던져 누군가가 알아차리기를 바랄 수 있지만, 당신은 빠르게 실패함으로써 그들의 관심을 더 잘 받을 것입니다 :-)

예를 포인터로 제한하는 것이 아니라 절대 발생해서는 안 되는 모든 매개 변수나 조건으로 일반화할 수 있습니다.많은 버그가 더 이상 눈에 띄지 않기 때문에 빠르게 실패하면 궁극적으로 더 나은 품질의 앱이 만들어집니다.

마지막으로, 빠른 실패는 특히 복구할 수 없는 오류나 정말 예상치 못한 상태를 감지하는 즉시 빠른 실패를 하는 경우 프로세스 상태를 최대한 정확하게 캡처하는 데 도움이 됩니다(메모리 덤프가 생성되는 경우).

프로세스를 계속할 수 있도록 허용된 경우(예: 'finally' 절이 실행되거나 스택이 풀리고 메모리 덤프가 실행되기 전에 모든 것이 파괴되거나 폐기되는 경우), 프로세스 상태가 변경되어 문제의 근본 원인을 진단하기가 훨씬 더 어려워질 수 있습니다.

응용프로그램을 종료하고 차단을 건너뛰기도 합니다.

예외 던지기에 대한 .NET Framework 설계 지침:

시스템을 호출하여 프로세스를 종료하는 것을 고려합니다.환경.코드가 추가 실행에 안전하지 않은 상황에 도달하면 예외를 던지는 대신 FailFast(.NET Framework 2.0 기능).

Joe Duffy는 여기서 빠른 실패와 그것을 유용하게 만드는 훈련에 대해 설명합니다.

http://joeduffyblog.com/2014/10/13/if-youre-going-to-fail-do-it-fast/

본질적으로, 그는 버그를 프로그래밍하는 것, 즉 프로그램 사용자의 잘못이지 프로그램 사용자의 잘못이 아닌 다른 입력이나 나쁜 것으로 합리적으로 예상될 수 있는 상황에 대해 예상치 못한 오류에 대해 항상 빠르게 실패하기로 결정하는 것이 코드 품질을 향상시키는 것으로 나타났다고 말합니다.

선택적인 팀 결정과 규율이기 때문에, 이 API를 C#에서 사용하는 것은 드문 일이라고 생각합니다. 왜냐하면 실제로 우리는 대부분 인사과나 기껏해야 온라인 상점에서 12명을 위한 LoB 앱을 작성하고 있기 때문입니다.

따라서 우리는 API 사용자에게 추가적인 조치를 취할 기회를 주지 않을 때 이를 사용할 수 있습니다.

작업 내에서 실행(또는 다시 실행)되는 처리되지 않은 예외는 나중에 임의의 시간에 작업이 가비지 수집될 때까지 적용되지 않습니다.

이 방법을 사용하면 프로세스를 중단할 수 있습니다. 이 답변을 참조하십시오.

언급URL : https://stackoverflow.com/questions/564581/what-is-environment-failfast