[Unity] 왜 유니티는 예외가 발생했을 때 종료되지 않을까?
카테고리: Unity
태그: Why Game Engine
왜 유니티는 예외를 처리 안해줬을 때 애플리케이션이 종료되지 않는가? 라는 의문점에서 시작되어 공부한 글입니다.
참고 글 : https://answers.unity.com/questions/485595/uncaught-exception-doesnt-kill-the-application.html
간단 요약
- 유니티에서 발생하는 예외는 관리되는 예외이기 때문에 애플리케이션을 종료시키지 않는다.
왜 유니티는 예외가 발생했을 때 종료되지 않을까?
- Unity 애플리케이션은 CLI 애플리케이션이 아니며, 관리되는 CLI환경에서 스크립트를 실행하는 네이티브 코드 애플리케이션입니다.
- Unity가 제공하는 모든 콜백은 네이티브 C++ 코드로 호출됩니다.
- 따라서 관리되는 호출 스택의 진입점에서 시작됩니다.
- catch되지 않는 예외는 끝에 도달할 때까지 스택 아래로 이동합니다.
- 이 시점에서 Unity는 콜백에서 예외가 포착되었음을 표시합니다.
- 예외는 응용프로그램을 종료하는데 반드시 필요한 것은 아니다.
- Unity의 경우 콜백 내부의 예외는 Unity의 사용자 스크립트 중 하나에 결함이 있는 것 같다는 것을 알려줍니다.
- 스크립트는 Unity 애플리케이션의 “게스트” 일 뿐이므로 관리되는 예외는 애플리케이션을 종료할 수 없음.
- c#이나 c++에서 예외가 발생했을 경우 관리되는 예외가 아니기 때문에 애플리케이션이 종료된다.
💻 열심히 공부해서 작성 중이니 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 알려주시면 감사하겠습니다! 😸
댓글 남기기