Convert exception error to string
Question:
I want to work with the error message from an exception but can’t seem to convert it to a string. I’ve read the os library man page but something is not clicking for me.
Printing the error works:
try:
os.open("test.txt", os.O_RDONLY)
except OSError as err:
print ("I got this error: ", err)
But this does not:
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
Answers:
From the docs for print()
All non-keyword arguments are converted to strings like str() does and written to the stream
So in the first case, your error is converted to a string by the print
built-in, whereas no such conversion takes place when you just try and concatenate your error to a string. So, to replicate the behavior of passing the message and the error as separate arguments, you must convert your error to a string with str()
.
In my experience what you want is repr(err)
, which will return both the exception type and the message.
str(err)
only gives the message.
I want to work with the error message from an exception but can’t seem to convert it to a string. I’ve read the os library man page but something is not clicking for me.
Printing the error works:
try:
os.open("test.txt", os.O_RDONLY)
except OSError as err:
print ("I got this error: ", err)
But this does not:
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
From the docs for print()
All non-keyword arguments are converted to strings like str() does and written to the stream
So in the first case, your error is converted to a string by the print
built-in, whereas no such conversion takes place when you just try and concatenate your error to a string. So, to replicate the behavior of passing the message and the error as separate arguments, you must convert your error to a string with str()
.
In my experience what you want is repr(err)
, which will return both the exception type and the message.
str(err)
only gives the message.