오류 처리
Handle errors in your scripts using error codes and custom error-handling logic.
읽는 시간 1분최근 업데이트: 한 달 전
스크립트에서 오류를 처리하는 방법을 알아봅니다.
오류 코드
스크립트에서 예외가 발생하면 Cloud Code는422오류 래핑
오류를 처리하려면 코드를try/catchJavaScript
래핑되지 않은 함수는 API 호출 중 하나라도 실패하면 오류를 반환합니다. 하지만 API 호출을 래핑하면 오류 메시지를 로깅하고 오류를 더욱 자세히 알아볼 수 있습니다.const { CurrenciesApi } = require("@unity-services/economy-2.4");module.exports = async ({ params, context, logger }) => { const { projectId, playerId } = context; const { currencyId } = params; const currencies = new CurrenciesApi(context); const setBalance = await currencies.setPlayerCurrencyBalance({ projectId, playerId, currencyId, currencyBalanceRequest: { balance: 100 } }); const decrement = await currencies.decrementPlayerCurrencyBalance({ projectId, playerId, currencyId, currencyModifyBalanceRequest: { amount: 50 } }); const increment = await currencies.incrementPlayerCurrencyBalance({ projectId, playerId, currencyId, currencyModifyBalanceRequest: { amount: 10 } }); const result = await currencies.getPlayerCurrencies({ projectId, playerId }); return result.data;}
JavaScript
로그를 확인하고 세부 정보를 보려면 Unity Cloud Dashboard를 열고 Products > Cloud Code > Logs를 선택합니다.const { CurrenciesApi } = require("@unity-services/economy-2.4");module.exports = async ({ params, context, logger }) => { const { projectId, playerId } = context; const { currencyId } = params; const currencies = new CurrenciesApi(context); try { const setBalance = await currencies.setPlayerCurrencyBalance({ projectId, playerId, currencyId, currencyBalanceRequest: { balance: 100 } }); const decrement = await currencies.decrementPlayerCurrencyBalance({ projectId, playerId, currencyId, currencyModifyBalanceRequest: { amount: 50 } }); const increment = await currencies.incrementPlayerCurrencyBalance({ projectId, playerId, currencyId, currencyModifyBalanceRequest: { amount: 10 } }); const result = await currencies.getPlayerCurrencies({ projectId, playerId }); return result.data; } catch (err) { logger.error("Failed to increment currency", {"error.message": err.message}, {"currencyId" : currencyId}); throw err; }}
로깅
스크립트 디버깅에 도움이 되도록loggerplayerIdenvironmentIdprojectIdJavaScript
커스텀 로그 속성을 추가하여 로그 메시지에 대한 자세한 컨텍스트를 확인할 수 있습니다. 예를 들어, Economy에 대한 호출이 실패하는 경우 로그 메시지에logger.debug(message, ...logAttributes)logger.info(message, ...logAttributes)logger.warning(message, ...logAttributes)logger.error(message, ...logAttributes)logger.fatal(message, ...logAttributes)
currencyIdJavaScript
로그를 보고 필터링하려면 Unity Cloud Dashboard로 이동하여 Cloud Code > Logs를 선택합니다. 자세한 내용은 로그 내보내기를 참고하십시오.logger.error("Failed to increment currency", {"error.message": err.message}, {"currencyId" : params.currencyId});
Unity Cloud Dashboard에서의 디버깅
Unity Cloud Dashboard를 통해 스크립트를 디버깅할 수 있습니다. Cloud Code > Scripts로 이동하여 디버깅하려는 스크립트를 선택합니다. Response 탭과 스크립트 에디터 도움말에 오류가 발생한 위치가 표시됩니다. Response 탭에는 오류의 행과 열이 표시됩니다. 디버거는 이 정보를 사용하여 Script Code 섹션에 오류가 발생한 위치를 시각적으로 나타내는 주석을 추가합니다.
JavaScript
const { CurrenciesApi } = require("@unity-services/economy-2.4");module.exports = async ({ params, context, logger }) => { const { playerId, projectId } = context; const { currencyId } = params; const currencies = new CurrenciesApi(context); try { const setBalance = await currencies.setPlayerCurrencyBalance({ projectId, playerId, currencyId, currencyBalanceRequest: { balance: 100, } }); } catch (err) { if (err.response) { logger.error("Failed to set currency", { "error.response": err.response }, {"currencyId": currencyId}); } else { logger.error("Failed to set currency", { "error.message": err.message }, {"currencyId": currencyId}); } throw Error('oops'); }}