250501 커밋
This commit is contained in:
@@ -5,84 +5,135 @@ using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
using ServerCore; using ServerBase;
|
||||
using ServerCore;
|
||||
|
||||
|
||||
namespace ServerBase;
|
||||
|
||||
//=============================================================================================
|
||||
// Result 관련 확장 함수
|
||||
//
|
||||
// author : kangms
|
||||
//
|
||||
//=============================================================================================
|
||||
/*=============================================================================================
|
||||
Result 관련 확장 함수
|
||||
|
||||
1. Result + Guard 조합 처리
|
||||
|
||||
public Result doFunction(string input)
|
||||
{
|
||||
var owner = getOwner();
|
||||
NullReferenceCheckHelper.throwIfNull(owner, () => $"owner is null !!!")
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(input, () => $"input is null !!! - {owner.toBasicString()}")
|
||||
|
||||
var result = new Result();
|
||||
|
||||
try
|
||||
{
|
||||
// 내부 로직 수행
|
||||
if (input.isNullOrWhiteSpace())
|
||||
{
|
||||
result.setFail(ServerErrorCode.InvalidArgument, "Input is empty.");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 비즈니스 로직 처리 성공
|
||||
result.setSuccess("Operation completed.");
|
||||
return result;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// 예상치 못한 예외 발생시 실패 처리
|
||||
err_msg = $"Exception !!!, Failed to perform, in xxx() !!! : exception:{e} - {owner.toBasicString()}";
|
||||
result.setFail(ServerErrorCode.InternalError, err_msg);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
2. Result 값에 따른 예외 처리
|
||||
|
||||
var result = server_logic.doFunction();
|
||||
|
||||
// 실패시, 예외가 발생 한다 !!!, (발생되기 원하는 예외타입을 작성)
|
||||
result.throwIfFail(
|
||||
() => $"Failed to doFunction() !!!, Details: {result.toBasicString()}",
|
||||
msg => new DesiredException(msg)
|
||||
);
|
||||
|
||||
author : kangms
|
||||
|
||||
=============================================================================================*/
|
||||
|
||||
public static class ResultHelper
|
||||
{
|
||||
public static bool isSuccess(this Result result)
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!");
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!");
|
||||
|
||||
if (true == result.ErrorCode.isSuccess())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return result.ErrorCode.isSuccess();
|
||||
}
|
||||
|
||||
public static bool isFail(this Result result)
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!");
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!");
|
||||
|
||||
if (true == result.ErrorCode.isFail())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return result.ErrorCode.isFail();
|
||||
}
|
||||
|
||||
public static void setSuccess(this Result result, string resultString = "")
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!");
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!");
|
||||
|
||||
result.set(ServerErrorCode.Success, resultString);
|
||||
}
|
||||
|
||||
public static void setFail(this Result result, ServerErrorCode errorCode, string resultString = "")
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!");
|
||||
public static void setFail(this Result result, ServerErrorCode errorCode, string resultString = "")
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!");
|
||||
|
||||
result.set(errorCode, resultString);
|
||||
}
|
||||
|
||||
public static string getResultString(this Result result)
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!");
|
||||
public static string getResultString(this Result result)
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!");
|
||||
|
||||
return result.ResultString;
|
||||
}
|
||||
|
||||
public static ServerErrorCode getErrorCode(this Result result)
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!");
|
||||
|
||||
return result.ErrorCode;
|
||||
}
|
||||
|
||||
public static void set(this Result result, ServerErrorCode errorCode, string resultString)
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!");
|
||||
|
||||
result.ErrorCode = errorCode;
|
||||
result.ResultString = resultString;
|
||||
}
|
||||
|
||||
public static string toBasicString(this Result result)
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!");
|
||||
public static ServerErrorCode getErrorCode(this Result result)
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!");
|
||||
|
||||
return result.ErrorCode;
|
||||
}
|
||||
|
||||
public static void set(this Result result, ServerErrorCode errorCode, string resultString)
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!");
|
||||
|
||||
result.ErrorCode = errorCode;
|
||||
result.ResultString = resultString;
|
||||
}
|
||||
|
||||
public static void throwIfFail( this Result result
|
||||
, Func<string>? fnLog = null
|
||||
, Func<string, Exception>? overrideException = null )
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!");
|
||||
|
||||
if (result.ErrorCode.isSuccess())
|
||||
return;
|
||||
|
||||
string message = fnLog?.Invoke() ?? $"Operation failed. ErrorCode: {result.ErrorCode}, ResultString: {result.ResultString}";
|
||||
|
||||
if (null != overrideException)
|
||||
{
|
||||
throw overrideException(message);
|
||||
}
|
||||
|
||||
throw new InvalidOperationException(message);
|
||||
}
|
||||
|
||||
public static string toBasicString(this Result result)
|
||||
{
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!");
|
||||
|
||||
return $"ErrorInfo: errCode:{result.getErrorCode()}, errDesc:{result.getResultString()}";
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user