2016-06-07 19 views
8

Tôi muốn làm việc với thông báo lỗi từ ngoại lệ nhưng dường như không thể chuyển đổi nó thành chuỗi. Tôi đã đọc trang thư viện os người đàn ông nhưng một cái gì đó không phải là nhấp cho tôi.Chuyển đổi lỗi ngoại lệ thành chuỗi

in lỗi hoạt động:

try: 
    os.open("test.txt", os.O_RDONLY) 
except OSError as err: 
    print ("I got this error: ", err) 

Nhưng điều này không:

try: 
    os.open("test.txt", os.O_RDONLY) 
except OSError as err: 
    print ("I got this error: " + err) 

TypeError: Can't convert 'FileNotFoundError' object to str implicitly 

Trả lời

10

Từ the docs for print()

Tất cả các lập luận phi từ khóa được chuyển đổi thành chuỗi như str() không và được ghi vào luồng

Vì vậy, trong trường hợp đầu tiên, lỗi của bạn được chuyển thành chuỗi bằng cách tích hợp print, trong khi không có chuyển đổi như vậy xảy ra khi bạn chỉ thử và ghép nối lỗi của bạn với một chuỗi. Vì vậy, để nhân rộng hành vi truyền thông điệp và lỗi dưới dạng đối số riêng biệt, bạn phải chuyển đổi lỗi của mình thành một chuỗi với str().

+5

Do đó gói err trong str() như trong str (err) hoạt động. Cảm ơn. – dpetican

+0

Vâng, chính xác. Không có gì. – miradulo

+0

Vấn đề là nó chỉ "in" thông báo lỗi nhưng không phải là loại lỗi. Làm thế nào để chúng tôi in cả loại và tin nhắn trong mã ngắn, giống như Python hiện nó? –

-1

Trải nghiệm của tôi theo ý bạn là repr(err), sẽ trả về cả loại ngoại lệ và thông báo.

str(err) chỉ cung cấp thông báo.

Các vấn đề liên quan