また、出ているエラーメッセージを、そのまま提示しましょう, eclipseで作業をしており、警告でi++の箇所に「到達不能 デッドコード」と記載されております。, else {の場合は... 何も処理を行わずに、iを+1してもう一度if文の中に入るようにしたい, ※みなさまからの回答を参考にし、作業を進めさせていただき、 ループするようにできました。, 回答 元のコードでは条件1、条件2、条件3のいずれかに当てはまるときにdateFlagの値をfalseとしているようですが。, //例えば「MONTH == csvData.get(i*2+1)」のような条件を1~3に入れています. プログラムをデバッグするとき、コードのブロック内にreturnステートメントを挿入すると便利であることがよくあります(おそらく悪い習慣ですが)。私はJavaでこのようなことを試みるかもしれません...。, 未使用のコードを持つことは悪い習慣であるため、警告が正当化される理由を理解できました。しかし、なぜこれがエラーを生成する必要があるのか​​理解できません。, これはJavaが乳母になろうとしているだけですか、それともこれをコンパイラエラーにする正当な理由がありますか?, 到達不能コードはコンパイラにとって無意味だからです。コードを人々にとって意味のあるものにすることは、コンパイラーにとって意味のあるものにすることよりも重要であり、困難ですが、コンパイラーはコードの本質的な消費者です。Javaの設計者は、コンパイラにとって意味のないコードはエラーであるという見方をしています。彼らのスタンスは、到達不能コードがある場合、修正が必要な間違いを犯したというものです。, ここにも同様の質問があります:到達不能コード:エラーまたは警告?、著者は「個人的にはエラーであるべきだと強く感じています。プログラマーがコードを書く場合、それは常に何らかのシナリオで実際に実行することを意図している必要があります。」明らかに、Javaの言語設計者は同意します。, 到達不能コードがコンパイルを妨げるべきかどうかは、コンセンサスが得られない問題です。しかし、これがJava設計者がそれを行った理由です。, コメントの多くの人々は、Javaがコンパイルを妨げない到達不能コードのクラスがたくさんあることを指摘しています。ゲーデルの結果を正しく理解していれば、到達不能コードのすべてのクラスをキャッチできるコンパイラはないでしょう。, ユニットテストでは、すべてのバグを検出できるわけではありません。私たちはこれを彼らの価値に対する議論として使用しません。同様に、コンパイラは問題のあるコードをすべてキャッチすることはできませんが、可能であれば不正なコードのコンパイルを防ぐことは依然として価値があります。, Java言語の設計者は、到達不能コードをエラーと見なします。したがって、可能な場合はコンパイルを防止するのが妥当です。, (反対票を投じる前に:問題は、Javaに到達不能なステートメントコンパイラエラーがあるかどうかではありません。問題は、 Javaに到達不能なステートメントコンパイラエラーがある理由です。Javaが間違った設計上の決定をしたと思うからといって、私に反対票を投じないでください。), 到達不能なステートメントを許可してはならない明確な理由はありません。他の言語では問題なく使用できます。あなたの特定の必要性のために、これは通常のトリックです:, それは無意味に見えます。コードを読む人は誰でも、それが意図的に行われたに違いないと推測します。残りのステートメントを到達不能のままにするという不注意な間違いではありません。, http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.21, コンパイル時エラーは発生しません。最適化コンパイラは、ステートメントx = 3を認識する場合があります。実行されることはなく、生成されたクラスファイルからそのステートメントのコードを省略することを選択できますが、ステートメントx = 3; ここで指定された技術的な意味で「到達不能」とは見なされません。, この異なる扱いの理論的根拠は、プログラマーが次のような「フラグ変数」を定義できるようにすることです。, アイデアは、DEBUGの値をfalseからtrueに、またはtrueからfalseに変更してから、プログラムテキストに他の変更を加えることなくコードを正しくコンパイルできるようにすることです。, ナニーです。.Netはこれを正しく理解したと思います。到達不能コードに対して警告が表示されますが、エラーは発生しません。警告されるのは良いことですが、コンパイルを妨げる理由はありません(特に、コードをバイパスするためにリターンをスローするのが良いデバッグセッション中)。, Javaの場合、これは実際にはオプションではありません。「到達不能コード」エラーは、JVM開発者が開発者を何かから保護したり、特に警戒したりすることを考えたという事実からではなく、JVM仕様の要件から発生します。, JavaコンパイラとJVMはどちらも、「スタックマップ」と呼ばれるものを使用します。これは、現在のメソッドに割り当てられた、スタック上のすべてのアイテムに関する明確な情報です。JVM命令が、あるタイプのアイテムを別のタイプに誤用しないように、スタックのすべてのスロットのタイプを知る必要があります。これは、数値がポインタとして使用されるのを防ぐために最も重要です。Javaアセンブリを使用して、数値をプッシュ/格納しようとしてから、オブジェクト参照をポップ/ロードすることができます。ただし、JVMは、クラスの検証中、つまりスタックマップが作成され、整合性がテストされているときに、このコードを拒否します。, スタックマップを検証するには、VMはメソッドに存在するすべてのコードパスをウォークスルーし、どのコードパスが実行されるかに関係なく、すべての命令のスタックデータが以前のコードがプッシュしたものと一致することを確認する必要があります/スタックに保存されます。したがって、次の単純な場合:, 3行目で、JVMは「if」の両方のブランチがオブジェクトと互換性のあるもの(ローカルvar#0)にのみ格納されていることを確認します(3行目以降のコードがローカルvar#0を処理する方法であるため) )。, コンパイラが到達不能コードに到達すると、その時点でスタックがどのような状態にあるかが完全にはわからないため、その状態を確認できません。ローカル変数も追跡できないため、その時点でコードを完全にコンパイルすることはできません。そのため、このあいまいさをクラスファイルに残す代わりに、致命的なエラーが発生します。, もちろん、のような単純な条件if (1<2)はそれをだますでしょうが、それは実際にはだまされていません-それはコードにつながる可能性のある分岐を与えており、少なくともコンパイラとVMの両方がそこからスタックアイテムをどのように使用できるかを決定できますオン。, PSこの場合、.NETが何をするのかわかりませんが、コンパイルも失敗すると思います。これは通常、マシンコードコンパイラ(C、C ++、Obj-Cなど)では問題になりません。, コンパイラの目標の1つは、エラーのクラスを除外することです。到達不能コードが偶然に存在します。javacがコンパイル時にそのクラスのエラーを除外するのは素晴らしいことです。, 誤ったコードをキャッチするすべてのルールについて、誰かがコンパイラーにそれを受け入れてもらいたいと思うでしょう。これはコンパイラチェックのペナルティであり、バランスを正しく取ることが言語設計のトリッキーなポイントの1つです。厳密なチェックを行っても、作成できるプログラムの数は無限にあるため、それほど悪くはありません。, このコンパイラエラーは良いことだと思いますが、回避する方法があります。真になることがわかっている条件を使用します。, 必要なことを実行できる限り、コンパイラが厳密であればあるほど良いと文句を言うのは確かに良いことです。通常、支払うべき小さな代償はコードをコメントアウトすることですが、コードをコンパイルすると機能するという利点があります。一般的な例は、テスト/デバッグがメインテストのみで短いものであることに気付くまで人々が悲鳴を上げるHaskellです。私は個人的にJavaでデバッグをほとんど行いませんが、(実際には意図的に)注意を払っていません。, 許可する理由if (aBooleanVariable) return; someMoreCode;がフラグを許可することである場合、if (true) return; someMoreCode;コンパイラtrueはフラグではない(変数ではない)ことを「知っている」ため、コンパイル時エラーを生成しないという事実は、CodeNotReachable例外を生成するポリシーに矛盾があるように見えます。, 興味深いかもしれないが、メソッドのコードの一部をオフにすることには適用されない他の2つの方法とif (true) return:, さて、言う代わりに、jvm引数if (true) return;に言っassert falseて追加-ea OR -ea package OR -ea classNameしたいかもしれません。良い点は、これによりある程度の粒度が可能になり、jvm呼び出しに追加のパラメーターを追加する必要があるため、コードにDEBUGフラグを設定する必要はありませんが、実行時に引数を追加することで、ターゲットがターゲットでない場合に役立ちます。開発者マシンとバイトコードの再コンパイルと転送には時間がかかります。, System.exit(0)方法もありますが、これはやり過ぎかもしれません。JSPのJavaに配置すると、サーバーが終了します。, Javaが設計上「乳母」言語であることは別として、制御を強化するためにC / C ++のようなネイティブのものを使用したいと思います。, Javaもこれについて完全に一貫しているわけではありません。デッドコードを引き起こすいくつかの制御フローについては、Javaは文句を言いません。他の人にとってはそうです。どのコードが死んでいるかを判断することは、計算不可能な問題です。Javaが終了できないものを開始することにした理由はわかりません。, @Gabe:無害ではないので、ほぼ間違いなく間違いです。コードを間違った場所に配置したか、一部のコードに到達できないような方法でステートメントを記述したと誤解したかのいずれかです。これをエラーにすると、誤ったコードが書き込まれるのを防ぐことができます。コード内の到達不能な場所に他の開発者が読めるようにしたい場合(到達不能コードの唯一の対象者)は、代わりにコメントを使用してください。, SamStephens:呼び出されていないメソッドと未使用の変数が本質的にすべての形式の到達不能コードであると考えています。一部のフォームを許可し、他のフォームを許可しないのはなぜですか?特に、なぜそのような便利なデバッグメカニズムを許可しないのですか?, コメントも届きませんか?私の考えでは、到達不能コードは実際にはコメントの形式です(これは私が以前にやろうとしていたことなどです)。しかし、「実際の」コメントも「到達可能」ではないことを考えると...おそらくこのエラーも発生するはずです;), 問題は、彼ら(Java言語設計者)がこれと矛盾していることです。実際のフロー分析がある場合、両方, それでも、あなたが示すトリックに悩む理由がわからない。到達不能コードはコンパイラにとって無意味です。したがって、その対象読者は開発者だけです。コメントを使用してください。一時的に返品を追加する場合は推測しますが、回避策を使用すると、返品を入力して次のコードをコメントアウトするよりもわずかに速い場合があります。, @SamStephensしかし、切り替えたいときはいつでも、コードをコメントアウトする必要がある場所と、その逆を行う必要がある場所をすべて覚えておく必要があります。ファイル全体を読み通し、ソースコードを変更する必要があります。おそらく、ある場所で「true」を「false」に置き換えるのではなく、時々微妙な間違いを犯します。スイッチングロジックを一度コーディングして、必要な場合以外は触れない方が良いと思います。, 「コードを読む人は誰でも、それが意図的に行われたに違いないと推測するでしょう」。これはまさに私の意見の問題です。人々は推測するべきではなく、理解する必要があります。コードを覚えることは、コンピューターへの指示だけでなく、人々とのコミュニケーションです。非常に一時的なもの以外の場合は、私の意見では構成を使用する必要があります。上に表示されているものを見ると, このトリックはデバッグに非常に役立ちます。失敗している場所を見つけようとするメソッドの「残りの部分」を排除するために、if(true)リターンを追加することがよくあります。他にも方法がありますが、これはクリーンかつ迅速である-それはあなたが今までにチェックインすべきものではありません。, javaは以前に設計されたもので、当時は各バイトがカウントされていましたが、フロッピーディスクはまだハイテクでした。, デバッグアーリーリターンの場合、アーリーリターンに続く行をコメントアウトするのにさらに5秒かかります。到達不能コードをエラーにすることで防止されたバグのためにプレイするための小さな価格。, コンパイラが到達不能コードを除外することも簡単です。開発者にそうするように強制する理由はありません。, @SamStephensは、すでにコメントがある場合はそうではありません。コメントはスタックされないため、コメントでこれを回避するのは不必要な苦痛です。, @SamStephensコメントアウトされたコードはリファクタリングがうまくいきません。, Javaのデッドコード警告システムはどれほど積極的ですか?文法の一部として表現できますか(例:, 私は文法が苦手ですが、そうだと思います。ただし、「停止」はローカルにすることができます。たとえば、ループ内の「break」ステートメントなどです。また、メソッドがvoidの場合、メソッドの終わりはメソッドレベルの暗黙的な停止ステートメントです。'throw'も明示的な停止ステートメントになります。, 見つけるための最良の方法は、それを試してコンパイルすることです。ただし、コンパイラーでは、空のtry / catchステートメントも使用できます。ただし、JVM命令は理論的には例外をスローする可能性があるため、tryブロックは例外を終了する可能性があります。しかし、これがこの質問にどのように関連しているかはわかりません。, 基本的に、問題は、禁止されている「到達不能」ステートメントだけが、実際に式を評価することなく、解析に基づいて到達不能として識別できるステートメントであるかどうか、または標準がのような到達不能ステートメントを禁止できるかどうか, ここでの質問はなぜですか?到達不能コードはコンパイラにとって無意味です。したがって、その対象読者は開発者だけです。コメントを使用してください。, だから私はJavaの人が彼らのコンパイルを設計した方法に同意するので私は反対票を得るのですか?うわあ...–, あなたは実際の質問に答えなかったために反対票を受け取ります。SamStephensのコメントを参照してください。, @Samはその態度で、このサイトのベストアンサーの50%に反対票を投じる必要があります(私の答えがその中にあると言っているわけではありません)。他のITコンサルティングの状況と同様に、SOに関する質問に回答することの大部分は、特定の質問から実際の質問(または関連する副次的な質問)を特定することです。, "i think this line might cause a problem", // compiler isn't smart enough to complain about this.

気になる質問をクリップする.

.

三浦 春 馬 弾き語り 動画 19, Bts じゃんけん 掛け声 54, サトシ ヌメルゴン 戦犯 35, Icoca 履歴 50件以上 17, Masaru 体重計 Lo 22, ヴェポライザー 販売店 東京 8, ロンドンハーツ2時間スペシャル 輝く 日本 ドッキリ ス%e 13, Hguc 陸戦型ジム 批判 31, Fire Drill Roblox Id 4, Power Query ワイルドカード 6, ハイキュー アニメ 黒尾 4, ハガレン メイ その後 21, プジョー 407 エバポレーター 14, アクリル クリア スプレー 6, モンスト 大黒天 評価 5, 桃 味 の 炭酸水に 4, Zガンダム 劇場版 フォウ 23, 那珂川 川遊び 栃木 16, 六兆年と 一夜 物語 ピアノ 簡単 4, 名探偵コナン男主 成り代わり Pixiv 43, 駄菓子屋商売 イントロ 歌詞 8, White Album2 曲 5, Arkモバイル ケツァルコアトル 湧き 56, チアダン ドラマ キャスト 相関図 16, 空飛ぶタイヤ 映画動画 パンドラ 12, プロスピ リアタイ チート 13, タバコ 未成年 警察 10, Pso2 フリーフィールド Xh 13, ロトム 卵 産み方 22, サッカー 3級審判 不合格 31, マイクラ 必殺技 コマンド 9, スーパーは ぼ き 100 均 9, バンプ ベース 難しい 5, それ っ て 実際 どうなの 課 挿入歌 37, エキスポ 90 箕面記念の森 バーベキュー 10, カラフトマス 鮭 違い 50, 東洋エレメント エアフィルター 適合表 11, 松下 洸平 ファースト キス 22, キンブレ チューニング やり方 30, 鈴木福 父親 野球選手 35, 導きの地 罠 修正 4, ウィッチャー3 序盤 アビリティ 30, ハサウェイ 声優 なぜ 12, Nhk 秋採用 倍率 33, 清 竜人 性格 5, Spotify ラジオ 聞けない 43, スカパー 映像 途切れる 9, Softether Vpn 設定 16, カルロス2世 解剖 記録 和訳 9, 雲が描いた月明かり 原作 結末 56, 紅蓮華 楽譜 ボーカル 8, ヘビロテ 衣装 順位 5, ドア クローザー 協会 6, 突然 の心停止 原因 8, Greeeen 愛唄 Mp3 6, Issa 意味 スラング 7, 高 所 作業車 同乗 資格 4, 平屋 間取り 25坪 北玄関 4, 鬼滅の刃 動画 Youtube 9, パンダ Tc 薪ストーブ 10, 杉本昌隆 弟子 奨励会 25, ミリシタ Mv すごい 25, 聖カタリナ バスケ 2013 8, Pubgモバイル クイックマーカー とは 9, 痩せ 薬 Md 11, ソンホジュン ゴーバック 夫婦 5, 乃木坂 レート しあわせの保護色 10, ドラッグ セイムス オープン 予定 13, 関ジャム ギター 動画 23, メディカルクラーク 実技 2 14, ムフェト ジーヴァ ライトボウガン 10, 櫻井 有吉the夜会 動画 5月30日 34, ラブプラス Every エミュ 5, こち亀 ドラマ 打ち切り 12, それ っ て 実際 どうなの 課 挿入歌 37, Chrome Gpuプロセス メモリリーク 58, ミカルゲ 色違い Oras 27, Centos7 Redmine インストール 9, ジョジョ ダービー グッド 18, セーラーゾンビ 漫画 結末 6, Iphoneの設定を 完了 する この Icloudアカウントはすでにiphoneに追加 され 43, 香水 量り売り 店舗 東京 6, キム ヒョジュン インスタ 4,