>백엔드 개발 >C++ >단일 코드 블록에서 여러 예외를 효율적으로 포착하려면 어떻게 해야 합니까?

단일 코드 블록에서 여러 예외를 효율적으로 포착하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-20 23:17:12781검색

How Can I Efficiently Catch Multiple Exceptions in a Single Code Block?

단일 코드 블록에서 여러 예외 포착

프로그래밍 언어에서 예외 포착은 오류 처리의 중요한 부분입니다. 그러나 여러 특정 예외를 포착해야 하는 경우, 특히 개체에 대해 여러 작업을 수행할 때 장황하고 반복적일 수 있습니다.

질문:

쿼리 문자열에서 GUID를 구문 분석하고 이를 필드로 설정하는 다음 코드를 고려하세요.

<code>try
{
    WebId = new Guid(queryString["web"]);
}
catch (FormatException)
{
    WebId = Guid.Empty;
}
catch (OverflowException)
{
    WebId = Guid.Empty;
}</code>

이 예에서는 GUID 구문 분석 중에 FormatException 또는 OverflowException이 발생하면 WebId가 Guid.Empty로 설정됩니다. 그러나 다른 예상치 못한 예외가 발생하면 처리되지 않고 전파됩니다. 상용구 코드를 피하고 여러 예외를 효율적으로 처리하려면 더 나은 솔루션이 필요합니다.

해결책: System.Exception을 포착하고 유형에 따라 전환

단일 코드 블록에서 여러 예외를 포착하려면 catch(Exception ex) 구문을 사용할 수 있습니다. 이는 FormatException 및 OverflowException과 같은 특정 예외를 포함하여 기본 Exception 클래스에서 상속된 모든 예외를 포착합니다.

예외를 포착한 후 예외 유형에 따라 스위치 문을 사용하여 처리 방법을 결정할 수 있습니다. 예외가 알려진 예외인 경우(예: FormatException 또는 OverflowException) 특정 작업을 수행할 수 있습니다(예: WebId를 Guid.Empty로 설정). 그렇지 않으면 상위 수준 코드에서 예외를 처리할 수 있도록 예외를 다시 발생시킬 수 있습니다.

<code>catch (Exception ex)            
{                
    if (ex is FormatException || ex is OverflowException)
    {
        WebId = Guid.Empty;
    }
    else
        throw;
}</code>

이 접근 방식을 사용하면 코드 블록에서 여러 특정 예외를 포착하고 필요에 따라 처리하는 동시에 예상치 못한 예외가 전파되도록 허용할 수 있습니다.

위 내용은 단일 코드 블록에서 여러 예외를 효율적으로 포착하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.