ホームページ Java &#&はじめる Javaの例外とは何ですか

Javaの例外とは何ですか

Nov 12, 2019 pm 03:39 PM
java 異常な

Javaの例外とは何ですか

Java の例外 (例外とも呼ばれます) は、プログラムの実行中に発生し、実行中のプログラムの通常の命令フローを中断するイベントです。プログラムの実行エラーを迅速かつ効果的に処理するには、例外クラスを使用する必要があります。

例外の概要

プログラムでは、プログラマが予期しないさまざまな状況、またはユーザーの不正なデータなど、プログラマの制御を超えた状況によってエラーが発生することがあります。 、存在しないファイルを開こうとしているなど。プログラムの実行エラーを迅速かつ効果的に処理するために、Java では特に例外クラスを導入しました。

例 1

例外とは何かをよりよく理解するために、非常に単純な Java プログラムを見てみましょう。以下のサンプルコードでは、1~3の整数を入力することができ、それ以外の場合は入力エラーとなります。

package ch11;
import Java.util.Scanner;
public class TestO1
{
    public static void main(String[] args)
    {
        System.out.println("请输入您的选择:(1~3 之间的整数)");
        Scanner input=new Scanner(System.in);
        int num=input.nextInt();
        switch(num)
        {
            case 1:
                System.out.println("one");
                break;
            case 2:
                System.out.println("two");
                break;
            case 3:
                System.out.println("three");
                break;
            default:
                System.out.println("error");
                break;
        }
    }
}

通常の状況では、ユーザーはシステム プロンプトに従って 1 から 3 までの数字を入力します。ただし、ユーザーが必要な入力を行わなかった場合、たとえば文字「a」を入力した場合、プログラムの実行時に例外が発生し、実行結果は次のようになります。

请输入您的选择:(1~3 之间的整数)
a
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at text.text.main(text.java:11)

例外の原因と使用原則

Java で例外が発生する主な理由は 3 つあります:

1. Java 内部エラーが発生しました。 、Java 仮想マシンによって生成される例外。

2. null ポインター例外、配列範囲外例外など、書かれたプログラム コードのエラーによって発生する例外。この種の例外は未チェック例外と呼ばれ、通常、これらの例外を特定のクラスで集中的に処理する必要があります。

3. throw ステートメントを通じて手動で生成された例外はチェック例外と呼ばれ、通常はメソッドの呼び出し元に必要な情報を通知するために使用されます。

Java はオブジェクト指向メソッドを通じて例外を処理します。メソッドの実行中に例外が発生すると、メソッドは例外を表すオブジェクトを生成し、それをランタイム システムに渡します。ランタイム システムは、例外を処理するための対応するコードを探します。

例外オブジェクトを生成し、それをランタイム システムに送信するプロセスを例外のスローと呼びます。ランタイム システムは、その種類の例外を処理できるオブジェクトが見つかるまでメソッドの呼び出しスタックを検索します。このプロセスは例外のキャッチと呼ばれます。

Java 例外により、ユーザーはプログラムの堅牢性とセキュリティを考慮する必要があります。例外処理は、プログラムの通常のフローを制御するために使用されるべきではありません。その主な機能は、プログラムの実行中に発生する例外を捕捉し、それに応じて処理することです。特定のメソッドで発生する可能性のある例外を処理するコードを作成する場合、次の 3 つの原則に従うことができます:

1. 現在のメソッド宣言で try catch ステートメントを使用して、例外をキャッチします。

2. メソッドがオーバーライドされる場合、そのメソッドをオーバーライドするメソッドは、同じ例外または例外のサブクラスをスローする必要があります。

3. 親クラスが複数の例外をスローする場合、オーバーライド メソッドはそれらの例外のサブセットをスローする必要があり、新しい例外をスローすることはできません。

例外タイプ

Java のすべての例外タイプは、組み込みクラス java.lang.Throwable クラスのサブクラスです。つまり、Throwable は最上位にあります。例外クラス階層の。図 1 に示すように、Throwable クラスの下には、Exception と Error という 2 つの例外ブランチがあります。

Javaの例外とは何ですか

図 2 からわかるように、Throwable クラスはすべての例外とエラーのスーパークラスです。以下の 2 つのサブクラスがあります: Error と Exception は、エラーと例外を表します。それぞれ。このうち、例外クラス Exception は実行時例外と非実行時例外に分けられ、非チェック例外(Unchecked Exception)、チェック例外(Checked Exception)とも呼ばれ、両者には大きな違いがあります。

·Exception クラスは、ユーザープログラムで発生する可能性のある例外に使用され、カスタム例外タイプのクラスを作成するために使用されるクラスでもあります。

·Error は、通常の状況ではプログラムによってキャッチされることが予期されない例外を定義します。タイプ Error の例外は、ランタイム システム自体に関連するエラーを表示するために Java ランタイムによって使用されます。スタック オーバーフローは、このエラーの例です。

·この章では、Error タイプの例外処理については説明しません。これらは通常、プログラムの制御を超えた致命的かつ致命的なエラーであるためです。この章の残りの部分では、Exception タイプの例外処理について説明します。

ランタイム例外は、NullPointerException、IndexOutOfBoundsException など、RuntimeException クラスとそのサブクラスの例外です。これらの例外はチェックされていない例外であり、プログラムでキャプチャするか処理しないかを選択できます。これらの例外は通常、プログラムの論理エラーによって発生するため、プログラムは論理的な観点からこのような例外の発生を回避するように努める必要があります。

非実行時例外とは、RuntimeException 以外の例外を指し、Exception クラスとそのサブクラスに属します。プログラムの文法上、必ず処理しなければならない例外であり、処理しないとプログラムはコンパイルされません。 IOException、ClassNotFoundException など、およびユーザー定義の例外例外。通常、カスタムのチェック例外は使用されません。表 1 に、いくつかの一般的な例外の種類とその機能を示します。

Javaの例外とは何ですか

php 中国語の Web サイト、無料の Java 入門チュートリアル が多数あり、オンラインで学習することを歓迎します。

以上がJavaの例外とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

キーボードのボリュームキーが機能していません キーボードのボリュームキーが機能していません Aug 05, 2025 pm 01:54 PM

まず、checkifthefnkeysettingisinterferingboththevolumekeyaloneandfn volumekey、thentogglefnlockwithwithfn escifavaible.2.enterbios/uefiduringbootandenable functionkeysordisordisordisordisable hotkeymodetoEnsure -deure are areiin areaudiodawaudaidized.3.updedatedateoreer areaudiolizezized

Javaの2つの文字列を比較する方法は? Javaの2つの文字列を比較する方法は? Aug 04, 2025 am 11:03 AM

.equals()メソッドを使用して文字列コンテンツを比較します。これは、==はコンテンツではなくオブジェクト参照のみを比較するためです。 1。.equals()を使用して、文字列値を均等に比較します。 2。.equalsignorecase()を使用して、ケースを無視して比較します。 3. .compareto()を使用して、辞書の順序で文字列を比較し、0、負、または正の数を返します。 4。.compareToignOreCase()を使用して、ケースを無視して比較します。 5。objects.equals()またはセーフコールメソッドを使用して、ヌル文字列を処理して、ヌルポインターの例外を回避します。要するに、オブジェクトが位相にあるかどうかを確認するために明示的に必要な場合を除き、文字列コンテンツの比較に==を使用しないでください。

Javaで一連の文字列を結合する方法は? Javaで一連の文字列を結合する方法は? Aug 04, 2025 pm 12:55 PM

string.join()(java8)を使用することは、ストリングアレイを接続するための最も簡単な推奨方法であり、セパレーターを直接指定するだけです。 2。Javaの古いバージョンの場合、またはより多くのコントロールが必要な場合、StringBuilderを使用して手動でトラバースしてスプライスできます。 3。StringJoinerは、接頭辞や接尾辞などのより柔軟な形式を必要とするシナリオに適しています。 4。array.stream()とcollectors.jaining()を組み合わせて、結合する前に配列のフィルタリングまたは変換に適しています。要約すると、Java8以降を使用する場合、String.Join()メソッドを望む必要があります。これは簡潔で読みやすいですが、複雑なロジックには推奨されます。

Pythonロギングへのファイルの例 Pythonロギングへのファイルの例 Aug 04, 2025 pm 01:37 PM

Pythonのロギングモジュールは、FileHandlerを介してファイルにログを書き込むことができます。まず、FileHandlerを使用してapp.logを使用して、レベルを情報に設定するなど、BasicConfig構成ファイルプロセッサとフォーマットを呼び出します。第二に、ストリームハンドラーを追加して、同時にコンソールへの出力を実現します。高度なシナリオでは、TimeDrotatingFileHandlerを使用してログを時間単位で除算します。たとえば、= 'Midnight'を毎日生成し、7日間のバックアップを維持し、ログディレクトリが存在することを確認できます。 getlogger(__ name__)を使用して名前のロガーを作成し、生産することをお勧めします

Python Pandasスタイリングデータフレームの例 Python Pandasスタイリングデータフレームの例 Aug 04, 2025 pm 01:43 PM

JupyternotebookでPandasstylingを使用すると、データフレームの美しいディスプレイを実現できます。 1。Highlight_maxとhighlight_minを使用して、各列の最大値(緑)と最小値(赤)を強調表示します。 2.勾配の背景色(ブルースや赤など)をbackground_gradientを介して数値列に追加して、データサイズを視覚的に表示します。 3.カスタム関数Color_ScoreとApplyMapを組み合わせて、異なる分数間隔に対してテキスト色を設定しました(≥90グリーン、80〜89オレンジ、60〜79赤、

VUEの計算されたプロパティとメソッド VUEの計算されたプロパティとメソッド Aug 05, 2025 am 05:21 AM

計算にはキャッシュがあり、依存関係が変更されないままである場合、複数のアクセスは再計算されませんが、メソッドは呼び出されるたびに実行されます。 2.Computedは、応答性データに基づく計算に適しています。メソッドは、パラメーターが必要または頻繁に呼び出されるが、結果は応答性データに依存しないシナリオに適しています。 3.データの双方向の同期を実現することができますが、メソッドはサポートされていません。 4.要約:最初に計算されたコンピューターを使用してパフォーマンスを改善し、パラメーターを渡したり、操作を実行したり、キャッシュを回避したりするときにメソッドを使用します。

TypeScriptの高度な条件付きタイプ TypeScriptの高度な条件付きタイプ Aug 04, 2025 am 06:32 AM

TypeScriptの高度な条件タイプは、TextEndsu?X:Y Syntaxを介してタイプ間の論理的判断を実装します。そのコア機能は、分散条件タイプ、推測タイプの推論、および複雑なタイプのツールの構築に反映されます。 1.条件付きタイプは、裸の型パラメーターに分散され、string [] | number []を取得するためにtoArrayなどのジョイントタイプを自動的に分割できます。 2.分布を使用してフィルタリングおよび抽出ツールを構築します。除外textendsuを除く除外:t、抽出抽出抽出extract textendsu?t:never、およびnullable filters null/undefined。 3

See all articles