• ベストアンサー

Javaの強制終了するコード

Javaのテスト勉強をしております。 つきましては教えていただきたいことがございます。 入力値に問題があったらプログラムを強制終了させるコードとしてテキスト中では 問題によってreturn()となっていたりSystem.exit()となっていたりします。 この二つは何が違うのでしょうか。 ご回答くださいますようお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

main()メソッドの中で入力値の判断をする場合はそこでreturnすればプログラムを終了できますが(その時点までにスレッドを作っていた場合は除く)、main()の中以外ではreturnするだけではプログラムの終了になりません。一方、main()の中でSystem.exit()を使うこともできます。

2011tkxp
質問者

お礼

返事が遅くなってすみません。ご回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 終了コード errorlevel の考え方について

    こんばんは。 OSはWindowsXP Proを使っています。 テキストファイルに書いてある値を 終了コードにするバッチファイルを作成しました。 以下の2ファイルを同じディレクトリに保存します。 test.txt ┌--------┐   1 └--------┘ test.bat ┌---------------------------------------┐   @echo off   find "0" test.txt   if not errorlevel 1 exit /b 0   find "1" test.txt   if not errorlevel 1 exit /b 1   echo テキストは0~1の値ではありません。   exit /b 2 └---------------------------------------┘ この状態で次のように実行します (1) C:\>test.bat ---------- TEST.TXT ---------- TEST.TXT 1 (2) C:\>echo %errorlevel% 1 (3) C:\>set errorlevel=0 (4) C:\>echo %errorlevel% 0 ※ここでtest.txtの中の数字を2にします。 (5) C:\>test.bat ---------- TEST.TXT ---------- TEST.TXT テキストは0~1の値ではありません。 (6) C:\>echo %errorlevel% 0 (7) C:\>set errorlevel= (8) C:\>echo %errorlevel% 2 となります。 (2)の結果から、(1)で実行した「exit /b 1」でerrorlevelに1が格納されることが判ります。 しかし、(6)の結果から、(3)で実行した「set errorlevel=0」が (5)で実行した「exit /b 2」より優先されていることが判ります。 しかし(7)でerrorlevelの値を消去したように思われますが、 (8)の結果から、(3)のセットを消去しつつ(5)で実行した「exit /b 2」を記憶しているように見えます。 この挙動について、どのように理解すれば良いのでしょうか。 また「exit /b ○」と「set errorlevel=○」でセットする違いについて教えて頂ければと思います。 お願いします。

  • macのjavaの強制終了について困っています。

    どれくらい前からかはわからないのですが、このパスにある ↓ /Applications/Utilities/Java/J2SE 5.0/Java Preferences.app を起動させて、設定をさわろうとするといつも強制終了されてしまいます。おそらくそれが原因だと思うのですがインターネット上でjavaが埋め込まれているサイトを訪問するとsafariが強制終了してしまいます。 なぜ、/Applications/Utilities/Java/J2SE 5.0/Java Preferences.appは強制終了してしまうのでしょうか? 新たにアカウントを作成してこの/Applications/Utilities/Java/J2SE 5.0/Java Preferences.appの設定を変えようとすると問題なく変更できるので僕のホームの何かが悪いと思うのですが・・・ なぜこのような状態になっているのでしょうか?

    • 締切済み
    • Mac
  • functionから抜けることができません、強制終了したいです。

    function A(xxx) { B(xxx); C(xxx); } function B(xxx) { if (xxx == "yyy") {ここでBから抜けてさらにAも抜けたい。} return(xxx); } こんな時どうすればいいのでしょうか? javascriptですとexitはありませんしquitもありません。 breakも違うようです…スクリプトの強制終了はどうすれば良いのでしょうか。

  • IE8の終了

    JAVAアプレットにてシステムを構築しています。 IE8にて起動時、システム終了時に System.exit(0) を実行してもブラウザが終了しません。 別のタブが起動してしまう。 IE5.5の場合は問題なく終了します。 何か良い方法はありませんか?

  • あれ、強制終了はどうしちゃった…?

    DELL製のWindowsXP HOMEEDITIONを使ってるそこらの高校生です PCは富士通のWin95から使っていたのですが、このPCに乗り換えて色々と気づきました 仕様が変わっただけなのかもしれませんが… [Ctrl]+[Alt]+[Delete]で出るプログラムの強制終了は出ないのですか…?このPCでそのコマンドを入力すると[ローカルエリア接続]とかいう謎のグラフのようなものが淡々と進んでいくのですが… 技術不足なだけだと思いますが、もし今なおプログラムの強制終了が存在するなら開き方を教えてください、もしくは設定とか…? 今まで数々のPCをいじっては自分どおりにカスタマイズした挙句ぶっ壊してきたので触るのは慣れてるんですが…どうしても質問したかったので…お願いします

  • 強制終了

    Outlook express で返信メール、新規作成メールで文章を作成中、文字を入力変換させると「このプログラムは不正な処理を行なったので強制終了いたします」と何度やってもでてしまいます。どうしたら良いでョうか。 また、原因はなんでしょうか。

  • Accessが強制終了されて困っています

    WinXP:(すみません) Access:2003 (もうそろそろ?) まだ、使える メインフォームの欄に文字を一字入力しようとすると、砂時計が出て強制終了されてしまいます。サブフォームがあるのですが、そこにカーソルをもっていって文字を入力しても強制終了はされません。 それと、テーブルに戻って、メインフォームと項目が同じ箇所に文字を入力して、それからフォームに戻って続けて文字を入力すると、強制終了は起こりません。 Accessは比較的初心者です。 Webであちこち探して、マイクロソフトの発行している「修正プログラム」をダウンロードしてインスツールしてみましたが、症状が改善されません。 どちら様か、ご存知の方がいらっしゃいましたら、お教えいただきたいと思います。 よろしくお願いします。  

  • ウインドウの強制終了って?

    先日、ネットを見ていたら、いきなり、「このウインドウは強制終了により、内部ウインドウを1つ強制終了します。」という趣旨のエラー画面が出て、フリーズしてしまいました。 そのあと強制的に電源を切り、たちあげたところ、画面にWDNTのエラー画面が出て、「このプログラムは不正終了により、終了します。終了しない場合はプログラムの製造元に連絡してください。」という趣旨のメッセージがでて、閉じるとやると問題なくパソコンが動くのですが、パソコンを立ち上げるたび、この画面が出て、消えません。 解決方法をぜひ、教えてください。

  • プログラムの強制終了

    知人のパソコンが、 文字を入力し変換した際に、 使用したい漢字が一回目に出てきて、 そのまま決定する分には問題ないそうなのですが、 漢字を選択した場合、決定するとエラーになり、 プログラムが強制終了になってしまうそうです。 この状態を直す方法を教えて下さい。

  • java.util.concurrent.Future get() のタイムアウトを使ったコードが終了しない

    こんにちは、kataoka700と言います。 以下のコードは、「Java並行処理プログラミング(ソフトバンク)」P.150のプログラムを一部変更した物です。 実行してみると終了するまで時間がかかります。しかし、mainは終わっているようです。なぜ終了しないのでしょうか。 ご存知の方はいませんか。 ■プログラム import java.util.concurrent.*; import static java.util.concurrent.TimeUnit.NANOSECONDS; public class RenderWithTimeBudget { private static final Ad DEFAULT_AD = new Ad(); private static final long TIME_BUDGET = 0; private static final ExecutorService exec = Executors.newCachedThreadPool(); Page renderPageWithAd() throws InterruptedException { long endNanos = System.nanoTime() + TIME_BUDGET; Future<Ad> f = exec.submit(new FetchAdTask()); Page page = renderPageBody(); Ad ad; try { long timeLeft = endNanos - System.nanoTime(); ad = f.get(timeLeft, NANOSECONDS); } catch (ExecutionException e) { ad = DEFAULT_AD; } catch (TimeoutException e) { ad = DEFAULT_AD; f.cancel(true); } page.setAd(ad); return page; } Page renderPageBody() { return new Page(); } static class Ad { } static class Page { public void setAd(Ad ad) { } } static class FetchAdTask implements Callable<Ad> { public Ad call() { return new Ad(); } } public static void main(String[] args) { RenderWithTimeBudget rw = new RenderWithTimeBudget(); try { rw.renderPageWithAd(); System.out.println("main() 終了"); } catch (InterruptedException e) { e.printStackTrace(); } } } ■実行結果 C:\>javac RenderWithTimeBudget.java C:\>java RenderWithTimeBudget main() 終了 C:\> ■環境 OS:WindowsXP SP3 Java:java version "1.6.0_11"

    • ベストアンサー
    • Java