のじしお@プログラミングがんばる

田舎でも車なくてもやっていける話とか、プログラミング学習の備忘録とか。いいタイトルが思いつかないんだ…;;まずは書いて、あとから随時手入れをば。

SyntaxError Invalid char `\x08' in expressionが出た時とりあえず試してみるとよいこと

RailsでSyntaxError  (syntax =構文 の意) はよく遭遇するエラーですが、

 

「スペルミスか何かかな?」と思ったら

空白やコメントアウトしてる部分でSyntaxErrorが出て

( °∀°;)えっ????

 

ってなりました;(笑)

 

SyntaxError で Invalid char `\x08' in expressionが出たときは、まずここを見直そう!

 

このエラーが出たときに

「該当コードのどこも間違ってないのにおかしいなぁ…」という時にも有効です。

 

 

すぐ直せるエラーですが、画面眺めてるだけでは少々発見し難い。。。

 

忘れた頃にまた同じパターンに落ちたらハマりそうなので、忘れずに書き留めておこうっと。

 

 

 

エラー内容:SyntaxError in 〇〇 Controller

 

私のエラー画面はこちら。UsersControllerでSyntaxError。

で、左画面コントローラ側の7行目、#新規作成 の部分でエラーだそうです。

コメントアウトしてるのに…ぐぬぬ

f:id:piyomaru-bunbun:20180425220954p:plain

 

 

Invalid char `\x08' in expression

SyntaxErrorが出るとこの文章も目にする。いつも読み流してたけど、せっかくなので少し理解しておく。

 

エラー・メッセージ

 (一部抜粋)

Invalid character

プログラム・メッセージ文字列の中に無効な文字があります。

Invalid expression

式データ要素は無効です。(IEEE488.2,7.7.7.2を参照してください。)例えば、括弧が対をなしていなかったり、文字が規格に違反しています。

引用元:

http://ena.support.keysight.com/e5071c/manuals/webhelp/jpn/product_information/error_messages/error_messages.htm#I

 

 

 無効な文字があるよって言ってたんですね。

でもコメントアウトしてるんだから、そもそも無効なのでは?

ヽ(*゚∀。*)ノアルェー?????

考えようとするとドハマりしそうです(笑)

 

さて解決にいきましょう。

 

Rails初心者はここを疑え!その①: #は半角変換× 半角入力○

 

 解決の糸口は、コメント記述時の#にありました。

 

まず自分の場合、コメント書くときには主に次の2通りのやり方をしています。

 

一つは、先に文章書いてから行選択 でコメントアウトさせる方法

(文章書く → Command+L → Command+/ )

 

 

もう一つは、まず#を書いてから文章を書きだす方法

 

 で、この#から書き始めていると(時々やってしまっているのですが)、

#を書く際、直前まで かな入力 になってたら(#あとにすぐまた日本語書きたいので)

#の入力を、かな入力で#を打ってから半角変換している

 ↑これがエラーになることがある(ただし毎回ではない)

 

この毎回じゃないというという点が難点^^;

エラー回避できるときもある、というよりむしろ忘れた頃にエラー認識されたりするので、コメントアウト部分でエラー出てたらまずはここを見直してみよう。

 

 

 

Rails初心者はここを疑え!その②:空白でSyntaxErrorが出たときは

 これでコメントアウト部分のエラーは回避できました。

そのあとに続けて空白部分でもSyntaxErrorが出たので、これも直してみます。

 

f:id:piyomaru-bunbun:20180425232843p:plain

 

 

エラーになってる空白の行を一回消して書き直してみる。

エラーにされている左画面の11行目、余計な空白は消してみる

f:id:piyomaru-bunbun:20180425234723p:plain

 

 これでどうかな?

   ↓

f:id:piyomaru-bunbun:20180425233815p:plain

 うむ!解決!^^

 

その③:とりあえずInvalid char `\x08' in expressionが出たらやってみるとよいこと

空白やコメントアウト部分でない箇所でも、Invalid char ~が出たら下記のように、とりあえずコードの空白部分を書き直したり、一文まるごとすぐ下などに書き直してみると、あっさりエラー回避できることもあります。

 

空白書き直すときは先頭や末尾も忘れずに書き直しましょう。

f:id:piyomaru-bunbun:20180709214238p:plain

 

 

 

まとめ

 

★コメントの#は半角入力で書くべし

 

★空白でエラーが出たら、空白を書き直すと解決できる場合もある

 

コメント部分や空白といった、一見処理に関係のないはずのところでSyntaxErrorになったときには、まずこのあたりをチェックしてみよう。

 

#の変換を疑うという発想は、画面とにらめっこしてるだけだとなかなか発見しづらいです。

 

なんとなくでも手を動かしてたら解決できるエラーではありますが、一つ一つ自分なりに理解して、糧にしていけたらと思います。

 

今後もたびたび遭遇しそうなエラーなので、またハマりそうになったら「そういえばこういう事例あったなぁ」と思い出して、次に活かしていきましょう~♪

 

ここまで読んでくださり、ありがとうございました^^