Update 1
The following function works for all the cases mentioned so far except for the trivial x/x case.
findPoles[expr_] := Module[{pos, npos},
(*find position of all Power in the fullform of the function*)
pos = Position[FullForm[expr], Power];
(*drop the last 0 to get the position of the actual power
expression*)
npos = Drop[pos[[#]], -1] & /@ Range[Length[pos]];
(*extract those position,
find their denominators and delete those which have none.
Lastly Solve for the poles*)
Solve[DeleteCases[Denominator[Extract[FullForm[expr], npos]], 1] ==
0, x]]
Testing the function
expr[1] = 1/(1 - x^2);
expr[2] = Exp[1/x];
Table[findPoles[expr[i]], {i, 2}]
(*{{{x -> -1}, {x -> 1}}, {{x -> 0}}}*)
Using the Denominator
command and then Solve
findDiv[exp_] :=
Which[exp === 1, {{x -> 0}}, True, Solve[Denominator[exp] == 0, x]]
expr = 1/(1 - x^2);
findDiv[expr]
(*{{x\[Rule]-1},{x\[Rule]1}}*)
expr = x/x;
findDiv[expr]
(*{{x\[Rule]0}}*)
Solve[0 == 1/expr, x]
. That will at least get you the ones where it diverges. $\endgroup$