Use the overload that does not throw.
bool exists(const path& p, system::error_code& ec) noexcept;
You will want to check the output parameter however, so this may be more work than catching an exception. It depends what you're trying to accomplish.