If you don't do any error handling, any error which occurs in P2(), P3() or P4() would be propagated to the caller in the stack. Thus, in case of any error if you just want to exit, you don't have to do any thing extra in this example.
However, I would suggest to add some sort of logging or other exception handling in the main method (assuming P1 in this case) so that it can give you details later while debugging or trouble shooting.
Thus:
private void P1()
{
try
{
P2();
P3();
}
catch(Exception exception)
{
}
}
private void P3()
{
P4();
}
private void P4()
{
}