Avatar
1
Quốc Hưng Hoàng Beginner
Cách xử lí exception trả về từ 3rd-party library
Chào anh Dũng và mọi người
Twilio
vào dự án backend của công ty.
Service layer
như sau:
import TwilioClient

class MessageClient:
    def __init__(self):
        self.twilio_client = TwilioClient(twilio_account_sid, twilio_auth_token)
    def send_message(body, from, to):
        self.twilio_client.send_message(body, from, to)
twilio
sẽ raise exception, em đang phân vân liệu mình sẽ handle exception trong service layer hay trong view (API) layer?
Mong anh giải đáp giúp !
Em cảm ơn ạ.
  • Answer
exception handle
Remain: 5
2 Answers
Avatar
tvd12 Enlightened
tvd12 Enlightened
liskov substitution
nói rằng khi lập trình chúng ta nên thiết kế làm sao để lớp có thể bị thay thế mà không làm ảnh hưởng đến tính đúng đắn của chương trình giống như trước khi thay thế.
TwilioClient
nữa và em muốn thay thế nó, thì em sẽ phải update cả tầng service lẫn view, việc này gây ra tác động lớn, và dễ bị ảnh hướng đến tính đúng đắn.
TwilioClient
nữa, em thay bằng 1 cái khác, thì em chỉ cần update tầng service mà thôi.
Vậy câu trả lời cho câu hỏi của em là nên xử lý exception ở tầng service nhé.
  • 0
  • Reply
Avatar
Bản thân em cũng nghĩ là handle ở tầng service nhưng thấy các project khác của cty lại handle ở tầng view nên bèn hỏi anh ạ.
send_messageMessageInstance/MessageSendError
phải ko anh ?
  • 0
  • Reply
Có thể ở cty em mọi người cần hoàn thiện nhanh dự án nên bỏ qua các nguyên tắc em ạ.
Em có thể define 1 exception của riêng em kiểu này:
class SendMessageError(Error):
    """Send message error"""
    pass
Và sau đó em sẽ wrap lại việc send message thế này:
try:
    self.twilio_client.send_message(body, from, to)
except:
    raise SendMessageError from exc
 –  tvd12 1658646659000