반응형
"던지기"는 무엇입니까? 그 자체로?
중복 가능성 :
throw 및 throw new Exception ()의 차이점
그냥 갖는 요점은 무엇입니까
catch (Exception)
{
throw;
}
이것은 무엇을합니까?
그 자체로 throw키워드는 catch위 의 명령문에서 포착 한 예외를 다시 발생시킵니다 . 이것은 기본적인 예외 처리 (아마도 트랜잭션 롤백과 같은 보상 조치)를 수행 한 다음 호출 메서드에 예외를 다시 발생시키려는 경우에 유용합니다.
이 메서드는 변수에서 예외를 포착하고 해당 인스턴스를 던지는 것보다 한 가지 중요한 이점이 있습니다. 원래 호출 스택을 유지합니다. (Exception ex)를 잡은 다음 ex를 던지면 호출 스택이 해당 throw 문에서만 시작되고 원래 오류의 메서드 / 줄이 손실됩니다.
때때로 다음과 같이 할 수 있습니다.
try
{
// do some stuff that could cause SomeCustomException to happen, as
// well as other exceptions
}
catch (SomeCustomException)
{
// this is here so we don't double wrap the exception, since
// we know the exception is already SomeCustomException
throw;
}
catch (Exception e)
{
// we got some other exception, but we want all exceptions
// thrown from this method to be SomeCustomException, so we wrap
// it
throw new SomeCustomException("An error occurred saving the widget", e);
}
내가 생각할 수있는 유일한 이유는 디버깅 중에 중단 점을 두려는 경우입니다.
또한 내가 생각하는 일부 도구에 의해 생성되는 기본 코드입니다.
똑같은 오류가 다시 발생하지만 이것으로 아무것도 얻지 못합니다.
때때로 catch 메서드를 사용하여 다음과 같이 예외를 중단하지 않고 로깅 또는 작업을 수행 할 수 있습니다.
catch (Exception) {
myLogger.Log(LogLevels.Exception, "oh noes!")
throw;
}
처음에는 이것이 스택이 풀릴 것이라고 착각하게 생각했지만 다음을 수행하는 경우에만 가능합니다.
catch (Exception err) {
throw err;
}
현재 예외를 다시 던지면 해당 예외가 "소스"와 스택 추적을 유지합니다.
참고 URL : https://stackoverflow.com/questions/2728640/what-does-throw-by-itself-do
반응형
'Program Club' 카테고리의 다른 글
| JavaScript 블록에 HTML 주석을 사용하는 것이 여전히 타당합니까? (0) | 2020.11.14 |
|---|---|
| 자바 스크립트는 배열의 일부입니다. (0) | 2020.11.14 |
| 프로그래밍 방식으로 GIF 애니메이션 중지 (0) | 2020.11.14 |
| Java에서 구분 기호를 제거하지 않고 일부 구분 기호로 문자열을 분할하는 방법은 무엇입니까? (0) | 2020.11.12 |
| 타이머를 어떻게 중지합니까? (0) | 2020.11.12 |