You can analyze polylines in amazing ways by using buffers. This is usually inefficient--buffers create many additional vertices--but (a) it is a technique available in many GISes (vector or raster based) and (b) it sometimes can produce information that is otherwise hard to get.
In this case, buffering the road by a small amount and then buffering by the negative of the same amount leaves little "islands" around all bends and around all intersections. This is easy to prove geometrically.
Here is an example of a 10 m polyline buffer (gray) and its -10 m buffer (light red) in a map that is 650 m wide:
Now intersect the original polyline layer with these island polygons, merge the segments by island identifier, and count the pieces:
The light yellow segments designate the high-count pieces and the dark cyan segments designate the low-count ones. In this fashion we have (a) found all bends and intersections (including self-intersections) and near junctions (see the extreme left, where the two segments do not quite meet)) and (b) differentiated the bends from the intersections. We can find the almost-junctions by selecting the islands that contain two or more connected segments: the bends contain only connected segments.
Due to the symmetry of buffering, the centroids of the intersection islands are the points of intersection.
One beautiful aspect of this style of analysis is that it does not care how the underlying polyline is represented: it could be a single feature, it could be one feature for each line segment, or anything in between.
Best Answer
Probably far too late for the OP but are you sure it's junction snapping that caused the problem, or is it junction intersections? All lines must be broken at junctions if Arc is to see them as connected.
Once you're clear on what to fix, the Topology tools in ArcGIS can do this - though you need an intermediate/advanced license for them. If you don't have that, then
v.clean
in the GRASS tools in QGIS can do it. I made some notes on this in the sDNA manual.The (free) prepare tool that comes as part of sDNA can also check and fix junction snapping - I added it as tolerance of link endpoints is a common problem due to the way ArcGIS handles tolerance. Also discussed on the manual page linked above.