저는 Ruby에서 명령 행 유틸리티를 작성하고 인수 조합이 올바른지 확인하는 로직을 코딩하고 있습니다. 오류가 발견되면 복구 할 의사가 없으면 ArgumentError를 발생시키는 대신에 abort()를 호출하면 어떤 이점이 있습니까? 일반적으로 복구를 시도 할 계획이없는 경우 중단하는 대신 예외를 발생시키는 것이 좋습니다. 예외 경로를 사용하는 것이 바람직하다고 가정 할 수 있습니다. 간단히 명령 행으로 되돌아가는 대신 정상적인 종료가 필요합니다.Ruby에서 인수 오류를 abort() 또는 raise()하는 것이 좋습니까?
2
A
답변
6
항상 예외를 발생시키기 위해서는 항상 중단해야합니다. 중단은 실제로는 의미심장하게 계속할 수 없다면 사용하는 해킹의 추악하고 정말로 최후의 수단 일종입니다.
ArgumentError
다음에 계속할 수 있습니다 : 올바른 구문을 사용자에게 알리고 도움말 메시지를 인쇄 할 수 있습니다. 또는 나중에 인수 파서를 다른 프로젝트에서 재사용하면 오류를 처리 할 수 있습니다. (실제로, 일반적인 관용구는 예외 블록 내에서 인수 파서를 호출하고 인수 파서가 오류를 발생시키는 경우 도움말 메시지를 인쇄하는 것입니다.
어쨌든 ArgumentError
의 기본 동작은 중단과 비슷하지만 더 많은 작업을 수행 할 수 있습니다. 따라서 더 유연한 해결책을 찾아야합니다.
0
코드 실행을 중지하거나 오류 처리기로 리디렉션해야 할 때 사용하는 프로그래밍 언어에서 오류가 발생합니다. 원하는 모든 기능을 수행 할 수 있습니다.
저는 도움의 메시지를 좋아합니다. 최소한 "--help"를 사용하여 유틸리티를 호출 한 결과를 표시 할 수 있습니다. –
@AndreasYankopolus : 대부분의 유틸리티는 유효하지 않은 명령 행이 입력되면 사용법 메시지 (어쩌면 본격적인 도움이 아님)를 표시합니다. 이는 사용자에게 명령을 사용하는 방법을 기억할 수 있도록 도움을줌으로써 수행됩니다. – nneonneo
@steenslag : OK, 언어가 수정되었습니다. – nneonneo