XXXバイト目でエラー発生!!どこだ!!

Vimエディタなら、このような状況でも、そのエラー箇所にあっさりと到達できる。
gotoコマンドを使えば良い。

{Nバイト}go

" {Nバイト}の部分は置き換えて、実際には、このようにコマンドを入力する。
80go

コマンドはgotoだが、
ビジュアルモードでもなければ、goまで入力した所で、
Nバイト目の位置までカーソルを移動してくれるだろう。




ところで、このgotoコマンド、私は、以下の理由から、あまり役に立つモノではないと考えていました。

1. 良い設計がされているアプリケーションであれば、エラーの種類から、エラーの発生した箇所を特定できる。
2. エラーが起きたときに、どこで起きたのか詳しく通知してくれる環境も多い。
3. IDEなら、エラーの起きた箇所を表示する機能ぐらい、当然ついている。
4. 同時に発生する他のエラーのメッセージを見て、エラーの箇所を特定できてしまうことが多い。
5. エラーが発生したと言い張る箇所が、エラーの実際に起きている箇所ではない、ことが多い。


最後の5番目、

5. エラーが発生したと言い張る箇所が、エラーの実際に起きている箇所ではない、ことが多い。

は、文法エラーの時などに、エラーの起きたバイト数が、ひとかたまりのコードの先頭か、最後をさしている事が多くて、
実際に、文法を間違えた箇所がわからない、ということです。

そりゃ、正確な場所がわかってたら表示してくれるよね、
正確なエラーの箇所がわかっているのに、バイト数しか表示しないのは、某商用DBぐらいだ。




なので、gotoコマンドの記事は、今まで書く気が無かったんですが、
今日、運良く(?)、gotoコマンドに救われたので、認識を改め、記事を書いておくことにしました。

ERROR    2009-10-11 19:36:50,818 contents.py:49] collect task is
failed ['utf8' codec can't decode bytes in position 23330-23332:
invalid data].

これは、goto無かったら、追うの大変だったよ。
ありがとう、goto
覚えてて良かった、goto