NX Lab

Bắt và phân loại lỗi NXException: lấy ErrorCode, Message và ghi nhận

#Python#Lỗi1 lượt xem

  1. Quản trị viênQuản trị· 0 điểm

    Câu hỏi ·

    Khi NX từ chối một thao tác, nó ném NXException chứa mã lỗi và thông báo. Biết cách đọc hai thông tin này giúp bạn quyết định tiếp tục, thử lại hay dừng.

    Bắt và phân loại lỗi NXException Bắt và phân loại lỗi NXException

    Các bước thực hiện

    1. Dùng try/except đúng chỗ. Bọc từng thao tác nhỏ, không bọc cả script.
    2. Đọc ErrorCode. ex.ErrorCode là số; tra trong tài liệu NX Open để hiểu nguyên nhân.
    3. Đọc Message. ex.Message là câu mô tả, ghi vào log.
    4. Phân biệt lỗi. Lỗi dữ liệu (bỏ qua file) khác lỗi hệ thống (dừng hẳn).
    5. Tiếp tục vòng lặp. Ghi lỗi rồi chuyển sang đối tượng kế tiếp.

    Code tham khảo (Python)

    import NXOpen
    
    def thu_thao_tac(ten, ham, lw):
        """Chạy ham(); trả về (thanh_cong, thong_bao)."""
        try:
            ham()
            return True, ""
        except NXOpen.NXException as ex:
            thong_bao = "%s: NXException mã %d - %s" % (ten, ex.ErrorCode, ex.Message)
        except Exception as ex:                       # lỗi Python thông thường
            thong_bao = "%s: lỗi Python - %s" % (ten, ex)
        lw.WriteLine(thong_bao)
        return False, thong_bao
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
    
        ket_qua = []
        ket_qua.append(thu_thao_tac("Tạo điểm", lambda: part.Points.CreatePoint(NXOpen.Point3d(1, 2, 3)), lw))
        ket_qua.append(thu_thao_tac("Mở file sai", lambda: session.Parts.OpenDisplay("X:/khong_co.prt"), lw))
    
        ok = sum(1 for k in ket_qua if k[0])
        lw.WriteLine("Hoàn tất: %d/%d thao tác thành công" % (ok, len(ket_qua)))
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • Thứ tự except quan trọng: bắt NXException trước, Exception chung sau.
    • Hàm thu_thao_tac giúp mọi bước có cùng cách báo lỗi, dễ gom vào báo cáo.
    • ex.ErrorCode là số nguyên; thông báo ex.Message thường đủ để biết lý do.

    Lỗi thường gặp

    • Bắt Exception rồi im lặng (pass) làm mất dấu vết lỗi; luôn ghi log.
    • Một số lỗi NX chỉ hiện dưới dạng cảnh báo trong Information Window mà không ném ngoại lệ; kiểm tra kết quả tạo ra có hợp lệ không.

    Code mang tính tham khảo, viết cho NX 12 trở lên (Python journal). Tên menu và một số lớp có thể khác theo phiên bản NX; hãy chạy thử trên bản sao của chi tiết trước khi dùng cho dữ liệu thật.

    Điểm: 0

Trả lời

Đăng nhập để tham gia thảo luận.