default ServiceErrorHandler orElse(ServiceErrorHandler other) {
        requireNonNull(other, "other");
        return (ctx, cause) -> {
            final HttpResponse response = onServiceException(ctx, cause);
            if (response != null) {
                return response;
            }
            return other.onServiceException(ctx, cause);
        };
    }
Returns a newly created {@link ServiceErrorHandler} that tries this {@link ServiceErrorHandler} first and
then the specified {@link ServiceErrorHandler} when the first call returns {@code null}.

<pre>{@code
ServiceErrorHandler handler = (ctx, cause) -> {
    if (cause instanceof FirstException) {
        return HttpResponse.of(200);
    }
    return null;
}
assert handler.onServiceException(ctx, new FirstException()) != null;
assert handler.onServiceException(ctx, new SecondException()) == null;
assert handler.onServiceException(ctx, new ThirdException()) == null;

ServiceErrorHandler combinedHandler = handler.orElse((ctx, cause) -> {
    if (cause instanceof SecondException) {
        return HttpResponse.of(200);
    }
    return null;
});

assert combinedHandler.onServiceException(ctx, new FirstException()) != null;
assert combinedHandler.onServiceException(ctx, new SecondException()) != null;
assert combinedHandler.onServiceException(ctx, new ThirdException()) == null;

// The default handler never returns null.
ServiceErrorHandler nonNullHandler = combinedHandler.orElse(ServiceErrorHandler.ofDefault());
assert nonNullHandler.onServiceException(ctx, new FirstException()) != null;
assert nonNullHandler.onServiceException(ctx, new SecondException()) != null;
assert nonNullHandler.onServiceException(ctx, new ThirdException()) != null;
}</pre>
core/src/main/java/com/linecorp/armeria/server/ServiceErrorHandler.java