에러처리 얼마나 하시나요?

shodhpfooqmm의 이미지

보통 라이브러리 함수 및 시스템콜을 사용할 때,
리턴값을 확인 후 대해 모든 에러처리를 하시나요?

코딩을 할 때 어느정도의 에러처리를 해야될지 감이 잘 안오네요.
모든 함수에 대해 리턴값을 확인하고 에러 유무를 확인하는 것이 좋은 습관일까요?
이에 따른 오버헤드는 크지 않을까요?

여러분은 어떻게 하시는지 궁금합니다.

익명 사용자의 이미지

추천 검색 키워드: depensive programming

chadr의 이미지

에러처리는 가능한 해주시는 편이 좋습니다.
그래야지 나중에 문제가 생겼을 경우 재현이 쉽기 때문입니다.
100% 발생하는 에러의 경우에는 바로 재현이 가능하겠지만

어쩌다 생기는 1%의 에러 경우에는 재현이 무지 힘들어집니다.

에러처리를 하면서 생기는 부하보다 에러처리를 안하면서 생기는 시스템 불안정과
비교해 보시면 에러처리를 해야할지 말아야할지 판단이 되실 것 같습니다.

에러처리에 따르는 부하를 계산해보자면 리턴값 비교후 에러의 경우 jmp가 가장 오버헤드가
클것입니다. 정수형 리턴값 비교야 뭐 cmp 명령어 하나 추가가 되는 오버헤드가 있겠지만
가장 큰 오버헤드는 참으로 만족시 jmp를 하게 되면 생기는 파이프라인 리셋 오버헤드가
가장 클 것입니다.

하지만 생각해봐야 할 것이 에러의 경우는 정상적인 경우의 예외 사항입니다. 즉 발생빈도가
매우 낮다는 것이지요. 그리고 이미 에러 케이스로 들어갈 경우에는 정상이 아니므로
시스템이 정상 진행이 안될 가능성이 높기 때문에 비정상일 경우 성능 걱정은 무의미하다고 생각됩니다.

정상 케이스보다 훨씬 못미치는 확률로 발생하는 jmp 코드의 오버헤드 보다는
저의 경우에는 에러처리 해서 버그 빨리 잡고 빨리 집에 가는 편은 택하겠습니다.

저는 두가지로 구분해서 에러처리를 합니다.

1. 에러가 발생하더라도 진행에 문제가 없는 경우 -> 로그만 출력하고 진행
2. 더이상 진행이 불가능 할 경우 -> 몇번 재시도 및 에러 복구 시도후 그래도 안되면 로그 출력후 종료

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

익명 사용자의 이미지

에러 처리는 모두 다 해 주어야 합니다. 나중에 큰 고생하지요.

익명 사용자의 이미지

에러처리를 알면서 안하는건 오늘 할 일을 내일로 미루는 것과 같습니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.