[완료]함수를 만들때 에러 핸들링 질문입니다.

anaud2의 이미지

안녕하세요

KLDP로 자주 글을 올리고 정보를 얻고 있는 신입사원입니다.
이번에 평문을 받아서 암호화를 하는 함수를 만들고 있는데요
함수를 제작할때 사용자가 어떤실수를 할지 모르니 에러핸들링을 잘하라란 지시를 받고 어떤사항을 초반에 체크를 해야할까 고민중에 있습니다.

일단은 들어오는 메세지가 널인지 아닌지 판단
공개키파일, 파일오픈시 오픈이 됐는지 안됐는지 판단
함수의 인자중 옵션값이 있는데 0과1 이외의 다른수가 오는지 판단

이3가지 말고는 잘안떠오르는데...
고수들은 프로그램을 만들때 어떤사항을 판단하고 에러메세지를 넣어주나요?

ktd2004의 이미지

다음만 체크하면 되지 않을까요?
* 입력 값에 대한 체크
* 함수내에서의 예외상황에 대한 체크
* 출력 값에 대한 체크

anaud2의 이미지

많은 도움이 되었습니다. 감사합니다.

M.W.Park의 이미지

일반적인, 절대적인 기준이 있다기 보다는

"범용 라이브러리 > 공동 개발 작업 > 개인 단독 작업"

정도의 상대적인 에러 처리 수준이 필요할겁니다. 또한 책임의 소지가 caller인지 callee인지도 이슈가 될만하고요.

예전에 첫직장에서 같이 작업하던 두 개발자가 에러 처리를 두고 설전을 벌이던 것이 기억나네요.
'NULL이 들어오면 무조건 죽어버리기 vs NULL이라 말해주고 에러 처리하기' 였는데 둘다 만만치 않은 사람들이라 아주 오래 싸우더군요. ^^;
저는 그때 어차피 복구가 불가능하므로 화끈하게 죽어버리는 쪽의 손을 들어주었던 기억이... ^^;

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

semmal의 이미지

에러처리나 죽어버리기는 주로 Controller에서만 하고 Model과 View에서는 거의 하면 안되는 것 아닐까 합니다.

순수한 로직에 에러처리가 들어가버리면 이식성이 떨어지고, 로직 변경에 따라서 에러처리 또한 변경해야할 경우가 생깁니다. 로직은 그저 정의된 return 값이나 정의된 exception만 뱉어내는게 옳을 것 같습니다. 물론 중요한 버그는 죽어버리는 것이 더 좋을 수도 있겠네요.

View에 에러처리가 들어가버리면 역시 이식성이 떨어지는데다, 계속 메시지가 발생하거나 죽어버린다면 문제가 심각해지겠지요. 그래서 그저 잘못된 정보가 들어오더라도 프로그램이 죽지는 않는 정도만 해주고 컨트롤러에게 떠넘기는 것이 맞다고 봅니다.
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.