Queue가 비어있을 때 실행하는 메서드를 X라고 할때
일일히 Queue가 비었는지 if 로 확인하는 것을...
Queue Empty 예외처리로 if 확인 없이 X를 실행하는 식으로ㅇㅇ
왠지 이게 더 성능 좋아보이기도?
대충 의사 코드로 말하자면,
if (Queue is Empty) X(); 를..
try {
Foo(Queue.Peek());
}
catch (QueueEmptyException e) {
X();
}
이런식으로ㅇㅇ
Queue가 비어있을 때 실행하는 메서드를 X라고 할때
일일히 Queue가 비었는지 if 로 확인하는 것을...
Queue Empty 예외처리로 if 확인 없이 X를 실행하는 식으로ㅇㅇ
왠지 이게 더 성능 좋아보이기도?
대충 의사 코드로 말하자면,
if (Queue is Empty) X(); 를..
try {
Foo(Queue.Peek());
}
catch (QueueEmptyException e) {
X();
}
이런식으로ㅇㅇ
일반적으로는 성능상 좋지 않고 예외를 로직으로 쓰는건 논리 흐름 면에서도 지양하는게 좋음
예외처리 자체가 성능이 원래 안좋나보네..
예외처리는 아예 '비상사태 시 처리'용도로만 써야하나보다..
마소에서 직접 하지말라고 doc에 써준걸 하는건 좋지 않아요
저런걸 직접 가리켜서 하지 말라고 했구나...
If문으로 처리하는게 더 좋음
그냥 메서드 하나 만들어서 개수 체킹해서 0개면 false 뱉는 식으로 if문에 담가버리면 안됌?
if/else랑 try/catch랑 동작하는 비용이 다르고 가독성도 if/else가 훨씬 좋음 try/catch같은 경우에는 진짜 에러 핸들링이 중요한 코어 라이브러리 작성에서나 쓰는거임
ㅇㅋ
스택 오버플로우에서도 대놓고 말하네 You should never use try/catch for flow control. Generating an exception is an extremely expensive action. If/else is much faster and cleaner. 라고..
초보때는 힙스터병걸려서 쓰고 싶은거 이해가긴 함
약간 그런생각 인정함 막 '예외처리'라는 걸 직접 체득하려고 일부러 프로그램에 적용하려하는거ㅇㅇ
그냥 볼 줄만 알면 돼 직접 엔진 만들어서 렌더러 짜거나 아니면 게임 서버 짜는 경우 아니면 게임 컨텐츠 쪽에서는 try/catch쓸 일이 거의 없음
오프라인 싱글 모바일겜이라면... ㅇㅋ if 구문으로 풀어써야겧다 예외처리 구문은 걍 학습용 코드로 딴데다가 저장해야겠다
해당 댓글은 삭제되었습니다.
catch 처리 믿고 try로 무작정 실행시키기보다는 실행 전 if 판별 더 낫나보네..