How to find out if the array_index of a fcurve is used
I believe you can do this from the bl_rna array_count property.  For instance on the array modifier, count isn't relative_offset_diplace is.

&gt;&gt;&gt; C.object.modifiers['Array'].bl_rna.properties['count'].array_length
0

&gt;&gt;&gt;C.object.modifiers['Array'].bl_rna.properties['relative_offset_displace'].array_length
3


I came across the same prob with searching for drivers and adding to UI sliders, and went for the try-except, which I also try to avoid.