Every request can fail: a missing file, malformed JSON, a database that refuses the connection, an order for five copies when three are left. PHP reports failures through old-style errors, which print a message and usually carry on, and exceptions, which unwind the stack until something catches them. Production code funnels both into exceptions, logs them in a searchable form, and shows the visitor a calm page with a reference number instead of a stack trace.