It's easier to accept constructive feedback because it's not directed in a personal way. Someone who leaves constructive feedback isn't questioning your intentions, motives, skills, or choices. They're not leaving snark, highlighting your mistakes, etc. You won't see much use of the words, I or you. Constructive feedback teaches you something and should leave you feeling better about the state of the code.
The difference between...
We should use a wrapper around this type so that...
and
Why did you pass this type without wrapping it?
Is that the former is suggesting a logical change to the code that will have a positive impact on its fitness for use. The latter is interrogating the author and has nothing to do with making the code better.
There's no need to doubt yourself so much. Don't let poor criticism gaslight you into thinking that there is something wrong with you. If you're responding to PR feedback in an emotional way it's a sign that you're trying to protect yourself and there's a reason for that reaction. If there's a problem with the magnitude of your emotional responses, that's a different problem (I've worked with people who were not getting therapy for their anger management issues). However anger, resentment, etc are normal feelings and are useful.
The next step to dealing with it is learning how to be polite and assertive. Once you can identify feedback that is not constructive you need to learn to tell people so and divert them away. In other words, how to tell people to take a walk without telling them to take a walk.
And you can be proactive in this too: talk with your team and team leads about feedback and develop a code review guideline to enshrine some simple rules that nudge people towards giving the kinds of constructive feedback you're looking for.
And if your team is encouraging the kind of environment where you feel bad about honest mistakes then you should consider looking for another team if such discussions don't change anything.