Skip to content

swift_errors

kobayashiharuto edited this page Jul 31, 2021 · 5 revisions

コンパイルエラー と ランタイムエラー

どちらも同じエラーに見えるかもしれません。
しかし...コンパイルエラーは愛すべき神、ランタイムエラーは忌むべき悪魔
まったくもって別物なのです。


ランタイムエラーとは

ランタイム=実行時

つまり、アプリが起動してユーザーが使っているときですね。
ここで起きてしまうエラーですから、ユーザーに迷惑をかけてしまいます。 絶対に避けなくてはなりません...!


コンパイルエラーとは

コンパイル=コードをアプリに加工する段階

決まった構文に従ってないと出るエラーです。
Xcode で ▷ ボタンを押して、アプリを作ってまーすってときにでるエラーの事ですね。
あと、Xcode ではコンパイル時でなくても随時構文を解析していますので、コーディング中に赤や黄色でエラーが出てくると思います。

嫌いですか?いやいや、よく考えてみてください。
たしかに、早くアプリ動かしてみたいのにコンパイルエラーで動かないのは残念な気持ちになります。
でも、決まった構文に従っていないコードは確実にバグります。そのとき、コンパイルエラーが起きないとどうなるか?
バグを抱えたままユーザーのもとにアプリが届くわけですね...恐ろしい。
つまりコンパイルエラーは、避けるべきランタイムエラーになる場所を教えてくれる神だったのです!


なぜこんな話をしたのか?

0 になってはいけない変数に 0 を入れたらコンパイルエラーを起きるようにしたい。
そんなコードを書いて、ランタイムエラーを回避しようというやり方を教えるつもりです。
このとき、この二つに区別がついていないと、「エラーが無駄に増えるだけじゃん」となる危険があるからです。
さあ、コンパイルエラーを増やしていきましょう!


まとめ

  • ランタイムエラーはユーザーに迷惑をかけるので絶対に避けたい
  • 対して、コンパイルエラーはランタイムエラーが起きる箇所を教えてくれる神
  • コンパイルエラーを増やして安心安全コーディング!

Clone this wiki locally