Edit: I think the solution is to not have your upstream job failed in the first place, you can still handle failed downstream jobs with the help of i.e. env. variables or other means.
More information on the exact layout of your job would be helpful, however you can easily define how the result of your downstream job affects the upstream job.
As a Build step
Handy when you have one wrapper job that triggers multiple downstream jobs and to i.e. aggregates some results, you can easily specify how the result of a downstream job affects the wrapper job.
You just need to check the Block until the triggered projects finish their builds to have this option show up.

The aviable options are explained as follows:

As a Post-build action
This is for chaining jobs to run after another, allowing you to specify the run condition
