C# 10 에서 Null Check #7

C# 10에서는 방법에서 null 매개 변수를 더 쉽게 확인할 수 있습니다.

출처: https://youtu.be/230zlnKkl3A

string? info = null;
void SayHI(string message )
{
    Console.WriteLine(value:$"Hello {message}");
}
SayHI(info); 

string 변수에 Null 을 할당하고 Console로 출력해보겠습니다.
당연히 아래와 같이 출력됩니다.

보통 Null 체크 로직은 아래와 같이 처리하는것이 보통입니다.

void SayHI(string message )
{
    if(message  is null)
    {
        throw new ArgumentNullException(nameof(message));
    }
    Console.WriteLine(value:$"Hello {message}");
}

하지만 이와 같은 방법은 .Net c# 9.0 이하에서 보통 사용하는 방법입니다.

void SayHI(string message )
{
    //if(message  is null)
    //{
    //    throw new ArgumentNullException(nameof(message));
    //}
    ArgumentNullException.ThrowIfNull(message);
    Console.WriteLine(value:$"Hello {message}");
}

최신 방법은 이와 같습니다.
Code 줄수도 줄고 code는 더 깔금 해졌습니다.

ArgumentNullException.ThrowIfNull(message);

뭔가 의욕차게 시작했는데 간단한 tip이라서 너무 짧게 끝났네요

13개의 좋아요

이런 팁 좋아욜ㅇㅅㅇ/

저는 갠적으루 이런 식의 예외 처리를 할 내용들을 모아서

public static class Thrower
{
	public static Exception ThrowIfFailedValidation<T>(T target, Func<T, bool> validation)
	{
		if (validation(target) is false)
		{
			throw new ValidationFailedException();
		}
	}
	
	public static Exception ThrowIfNullOrWhitespace(string? text, string? message)
	{
		if (string.IsNullOrWhiteSpace(text))
		{
			throw new TextNullOrWhitespaceException(message);
		}
	}

    public static Exception ThrowForbidden(string message, int resultCode)
    {
        throw new ForbiddenException(HttpStatusCode.Forbidden, message, resultCode);
    }

    public static Exception ThrowBadRequest(string message, int resultCode)
    {
        throw new BadRequestException(HttpStatusCode.BadRequest, message, resultCode);
    }

    public static Exception Throw500Error(string message, int resultCode)
    {
        throw new InternalServerErrorException(HttpStatusCode.BadRequest, message, resultCode);
    }
	
	...
}

요런 걸루 모아다가 씁니다.
예외를 적극적으로 사용하기 편리해지죵. =ㅂ=~

12개의 좋아요

확실히 유지보수면에서도 이해하기 쉬울것 같네요 :slight_smile:

2개의 좋아요

아 표절해갈게요 ㅎ 많은 참조 하겠습니다

5개의 좋아요

좋은 팁인 것 같아 ArgumentNullException.ThrowIfNull();에 대해서 더 찾아보던 중 아래와 같은 글을 발견했습니다.

다른 분들에게도 소개하면 좋은 글 같아 같이 첨부해봅니다!

4개의 좋아요

좋은 팁 감사합니다. 코드가 좀 더 직관적이고 일관적이게 되었네요 :smile:

2개의 좋아요

좋은 꿀팁들이 너무 많네요 :heart::heart:

2개의 좋아요