string must be the string representation of an integer. Otherwise, an ArgumentError will be raised.
If an exception is a possibility and there is a convention of marking such functions with a trailing exclamation mark in the name, why doesn’t this function have it?
That’s not quite correct. In the same conventions linked above we read:
There are also some non-paired functions, with no non-bang variant. The bang still signifies that it will raise an exception on failure. Example: Protocol.assert_protocol!/1.
To be clear, my question is nomenclatural, I’m not looking for workarounds.