It depends on where it is delete. If inside catch, which catches an exception, it can cause.
try {
f();
} catch( ... ) {
delete p;
}
If after catch, which catches the exception and that catchdoes not return from the function (i.e., allows execution of the execution thread after the block catch), then it can be called delete.
try {
f();
} catch( ... ) {
}
delete p;
delete catch catch, , delete .
try {
f();
delete p;
}
, delete , delete :
try {
f();
} catch( ... ) {
g();
delete p;
}