I would use the following approach
ifile = open('/tmp/file.dat', "rb")
reader = csv.reader(ifile,delimiter='|')
column_values = [row if len(row) > 4 else None for row in reader]
This uses a list comprehension (which is neater and faster than a for loop) and returns all the values of column 5 as a list.
Also, you are assigning the value of row to a dictionary in your example code, so a list comprehension may not suit your use case in this instance. However, I would personally gather the desired values first, then perform operations on them, which is why I have used a list comprehension here.
My example doesn't use try/except
try/except is usually pretty fast, unless the exception is triggered - see how fast are exceptions
In this case I assume the exception will be triggered, and thus the check for len(row) is the better option. You would only know which method was faster by profiling your particular code and data, which I have not done in this case. In general I avoid using try / except (unless it makes more sense than a conditional check).
If list comprehensions tickle your fancy, also check out generators. For this problem I would actually use a generator not a list comprehension, but as you are a beginner a list comprehension is probably an easier way to be introduced to the concepts at play.
Hopefully this makes sense and suits your needs.