try: except: でいったんcatchした例外を再度raiseするときに、もとの行番号を保存したままraiseすることができますか。

例えば次のようなプログラムを実行すると、

 1: def f1():
 2:    try:
 3:        f2()
 4:    except Exception, ex:
 5:        if ex.message:
 6:            raise ex
 7: 
 8: def f2():
 9:    f3()
10: 
11: def f3():
12:     raise Exception('*** error')
13:
14: f1()

以下のように「6行目で例外が発生」していると表示されます。

Traceback (most recent call last):
  File "hoge.py", line 14, in <module>
    f1()
  File "hoge.py", line 6, in f1
    raise ex
Exception: *** error

これを、12行目で発生していることを知りたいわけです。
どうすればいいでしょうか。よい知恵をお貸しください。