Constrained multi-objective optimization problems (CMOPs) are difficult to handle because objectives and constraints need to be considered simultaneously, especially when the constraints are extremely complex. Some recent algorithms work well when dealing with CMOPs with a simple feasible region; however, the effectiveness of most algorithms degrades considerably for CMOPs with complex feasible regions. To address this issue, this paper proposes a multi-stage evolutionary algorithm, where constraints are added one after the other and handled in different stages of evolution. Specifically, in the early stages, the algorithm only considers a small number of constraints, which can make the population efficiently converge to the potential feasible region with good diversity. As the algorithm moves to the later stages, more constraints are considered to search the optimal solutions based on the solutions obtained in the previous stages. Furthermore, a strategy for sorting the constraint-handling priority according to the impact on the unconstrained Pareto front is proposed, which can accelerate the convergence of the algorithm. Experimental results on five benchmark suites and three real-world applications showed that the proposed algorithm outperforms several state-of-the-art constraint multi-objective evolutionary algorithms when dealing with CMOPs, especially for problems with complex constraints.