-
[Windows Programming] μλ¬ νΈλ€λ§(Error handling) [1]Windows Programming 2020. 1. 13. 23:01λ°μν
- μ΄ κΈμ μ ν리 리μ²μ "Windows via C/C++"μ ν λλ‘ μμ±νμ΅λλ€.
μλ¬ νΈλ€λ§
μλμ° ν¨μλ₯Ό νΈμΆνλ©΄ νΈμΆλ ν¨μλ λ¨Όμ μ λ¬λ μΈμμ μ ν¨μ±μ νμΈνκ³ ν¨μμ κΈ°λ₯ μννλ€.
λ§μΌ μ λ¬λ μΈμκ° μ ν¨νμ§ μκ±°λ λ€λ₯Έ μ΄μ λ‘ μΈν΄ ν΄λΉ κΈ°λ₯μ μνν μ μμΌλ©΄ ν¨μλ μ€ν¨λ₯Ό λ°ννλ€.
μλμ° ν¨μλ μ€ν¨νλ©΄ ν¨μ μ€ν¨ μ¬λΆλ₯Ό μμλ΄λ κ³Όμ νμνλ€.
λ§μ΄ν¬λ‘μννΈλ λͺ¨λ μλ¬μ½λλ₯Ό 32λΉνΈ μ«μλ‘ μ μν΄ λμλ€. [2]νΈμμ μ€λͺ
- μλμ° ν¨μκ° μ€ν¨νλ©΄ λ΄λΆμ μΌλ‘ ν¨μλ₯Ό νΈμΆν μ€λ λμ μ€λ λ μ§μ μ μ₯μμ μλ¬ μ½λ μ μ₯
=> μ¬λ¬ μ€λ λ λμ μννλλΌλ μνΈκ° μν₯μ λ―ΈμΉμ§ μκ³ μ€λ λλ³ μλ¬ μ½λ μ μ§
DWORD GetLastError
μ΄λ€ μλ¬κ° λ°μνλμ§ νμΈνκΈ° μν΄ μ¬μ©
μ΅κ·Όμ νΈμΆλ ν¨μμ μλ¬ μ½λλ₯Ό μ€λ λ μ§μ μ μ₯μλ‘λΆν° κ°μ Έμ€λ ν¨μ
μλ¬λ λ©μμ§ ID, λ©μμ§ ν μ€νΈ, μλ¬ μ½λ 3κ°μ§ μμλ‘ κ΅¬μ±μλμ° ν¨μ μ±κ³΅νλ©΄ ERROR_SUCCESSλ₯Ό μλ¬ μ½λλ‘ κΈ°λ‘νλ€.
νμ§λ§ λͺλͺ μλμ° ν¨μλ λ€λ₯Έ μ΄μ λ‘ μ±κ³΅νλ€.
μλ₯Ό λ€λ©΄ λͺ λͺ λ μ΄λ²€νΈ 컀λ μ€λΈμ νΈλ₯Ό μμ±νλ ν¨μλ₯Ό νΈμΆνλ©΄ μμ±λλ κ²½μ° μΈμλ μ΄λ―Έ λμΌ μ΄λ¦μ 컀λ μ€λΈμ νΈκ° μ‘΄μ¬νλ κ²½μ°μλ μ±κ³΅μ λ°ννλ€. μ΄ λ μ ν리μΌμ΄μ μ μ±κ³΅ μ΄μ λ₯Ό ꡬλΆνκΈ° μν΄ GetLastError ν¨μλ₯Ό νΈμΆν΄μΌ ν μλ μλ€.
μ‘°μ¬μμ ν΅ν΄ $err,hr λ‘ νμΈνλ©΄ λ€μκ³Ό κ°μ΄ μλ¬λ₯Ό νμΈν μ μλ€. μλ¬ μ½λλ§ κ°μ§κ³ λ μλ¬ λ©μΈμ§λ₯Ό νμΈνλ λ°©λ²μ΄ μλ€. λ©λ΄μμ λꡬλ€μ΄κ° μ€λ₯μ‘°νλ₯Ό λλ¬ μλ¬ μ½λλ‘ λ©μμ§λ₯Ό νμΈνλ€.
DWORD FormatMessage
μλ¬ μ½λλ₯Ό λ©μμ§ ν μ€νΈλ‘ λ³νν΄ μ£Όλ ν¨μ, μ¬μ©μμκ² λ³΄μ¬μ€ λ©μμ§ ν μ€νΈλ₯Ό ꡬμ±
DWORD dwFlags
FORMAT_MESSAGE_FROM_SYSTEM : μ΄μ체μ κ° μ μνκ³ μλ μλ¬ μ½λμ λμλλ λ©μμ§ ν μ€νΈ μ»κ³ μ νλ€λ κ²μ μ리λ μν
FORMAT_MESSAGE_ALLOCATE_BUFFER : μλ¬ λ©μμ§ ν μ€νΈλ₯Ό μ μ₯ν μ μλ μΆ©λΆν λ©λͺ¨λ¦¬ 곡κ°μ ν λΉν΄ μ€ κ²μ μμ²
FORMAT_MESSAGE_IGNORE_INSERT : λ©μμ§ ν μ€νΈμ %λ‘ μμνλ μ리 νμμλ₯Ό μ€μ§μ μΈ κ°μΌλ‘ λ³κ²½νμ§ μμ κ²μ μ§μ νλ νλκ·Έ ( μΆκ° μ 보 μ 곡 => μ리 νμμ )
LPCVOID pSource : The location of the message definition( msdn docs μ°Έμ‘° )
DWORD dwMessageId : μλ¬ μ½λ
DWORD dwLanguageId : μΈμ΄ μλ³μ ( κΈ°λ³Έ μΈμ΄ μ€μ 0 )
PTSTA pszBuffer : λ©μμ§ μ μ₯ λ²νΌ μμ μ£Όμ
DWORD nSize : λ²νΌ ν¬κΈ°, FORMAT_MESSAGE_ALLOCATION_BUFFER μμΌλ©΄ 0
va_list *Arguments : μ리 νμμμ λνλ μ 보 νμ
μλ¬ λ©μμ§ ν μ€νΈμ λ΄μ©μ 미리 μ μ μμ΄μ νμ© λΆκ°λ₯
- μΆκ° μμ μ¬νμ΄λ κΆκΈν μ μμΌλ©΄ λκΈλ‘ λ¨κ²¨μ£ΌμΈμ.
λ°μν'Windows Programming' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ