ある日、いつも通りJavaのプログラムを組んでいた時のこと。
サーバーを再起動してプログラムを実行するとこんなメッセージが。
最初は???となりましたが無事に解決できました。
ということで今回はHTTPステータス500のエラーが出た時の原因と対処法を紹介していきます。
また、500だけでないエラーとその対処法についても紹介していきます。
HTTPステータス500のエラーの原因はこれでした
今回のエラーを見るとCreateServlet.java に原因がありそうですので、CreateServlet.java をみていきます。
すると原因が判明
今回出ているエラーはDBとのコネクションが切られているという内容でした。
ソースを確認したところ、69行目に接続をクローズしたにも関わらず、
再度76行目でDB処理を行おうとしていることが原因でしたね。
「DBに登録する処理が2か所あるから、どちらか不要な方を削除しろ」
とお叱りを受けてしまってたのですね。
よくあるエラーの種類と対処法
この章ではJavaプログラミングにおいてよく出るエラーについてその種類と対処法を紹介していきます。
それぞれのエラーの特徴とある程度の対象法を覚えておくことで、エラーが出た時も冷静に対処できます。
HTTPステータス 500 (Internal Server Error)
500エラーはこれからプログラミングをしていく上で頻繁に見かけるであろうエラーです。
特徴としてはエラーの原因が様々なものであるということです。
この後に紹介する404や405のエラーより少々複雑になるかもしれませんので、このエラーが出た時はしっかり原因を探しましょう。
500エラーは「正常に実行されていない」ことを示すエラーです。
自分が組んだプログラムの中に何らかのミスがあることを示してます。
例えば
・データベースを起動していないのにデータを呼び出そうとしている
・同じ処理を重複している
・ソースと実行しているクラスファイルの同期が取れていない
などが考えられます。
ミスの発見方法としては「メッセージ」「説明」「例外」「原因」が書かれているところをじっくりと読み込むことが重要です。
今回だと、CreateServletにミスがあること、DB(データベース)処理に問題があることが書かれています。
英語で読むのが大変かもしれませんが、エラーの文をネットで検索してみると解決策が乗っていたりする場合も多いです。
また「ソースと実行しているクラスファイルの同期が取れていない」ということに関しては、組んだプログラムに問題がなくても起きるので一回プロジェクトのクリーンを行ってみることも手です。
(ミスがないのにエラー表示するのはこちらとしてはきついですよねw)
参考
「ソースと実行しているクラスファイルの同期が取れていない」事による500エラーはEclipseで開発していると偶に発生する事象です。
自動でビルドする設定にしている場合、ソースを修正・保存すると自動的にビルドしてクラスファイルが作成されるようになっているのですが、時々それがうまく動作しないことがあります。
決まったタイミングがあるものでもないので、うまくいかない際はとりあえず手動でクリーンを試してみる習慣を付けておくと良いかと思います。
HTTPステータス 404 (Not Found)
404はよく起きるエラーの1つです。
このエラーは「指定したページが存在しない(Not Found)」ということを知らせています。
原因としては
・ブラウザに打ち込んだURLのスペルにミスがある
・アノテーションに記述されたパスのスペルミス
・redirect(リダイレクト)などのメソッドに指定したパスのスペルミス
・ひらけないファイルを開こうとしている(Web-INFなど)
などが考えられます。
HTTPステータス 405 (Method Not Allowed)
405エラーもプログラムを組む中では頻繁に見かけるようになります。
このエラーはHTTPメソッド(do GET , do POST)に何かしらの不備があるということを示しています。
単純なミスが原因ですので、405エラーでは焦らずにすぐに対処すれば、大抵の場合すぐに問題解決できます。
考えられる原因としては
・doGETやdoPOSTのつづりが間違っている(例えばdoGERになってしまっていたりdoGEなど文字の打ち忘れが起きていたりする)
・doGETしか記述されていないのにPOST通信をしようとしている
・doPOSTしか記述されていないのにGET通信をしようとしている
などが挙げられます。
それぞれのエラーの概念について軽くでもいいので覚えておこう!
今回はプログラミングでよく起きる500エラーなど主要なエラーについての特徴と対処法について紹介していきました。
プログラミングではエラーはずっと付いて回る問題です。
むしろ優秀なエンジニアやプログラマーを目指すのであれば「ミスをしない」ということよりも「ミスした時にいかに早く対処できるかどうか」が大事になってきます。
ぜひこの記事を参考にしてみてください。