目次
「Java で考える」では、例外は次のように定義されます: 例外状況とは、現在のメソッドまたはスコープの実行を継続できない問題を指します" > 「Java で考える」では、例外は次のように定義されます: 例外状況とは、現在のメソッドまたはスコープの実行を継続できない問題を指します
ホームページ Java &#&チュートリアル Java 改善の章 (16)-----例外 (1)

Java 改善の章 (16)-----例外 (1)

Feb 10, 2017 am 11:41 AM
java 異常な

Java の基本哲学は、「構造が不十分なコードは実行されない」です。 ! ! ! ! Da Cheng が欠けても不利にはなりません。冲冲冲

、それはエンドレスです。

この世に完璧なものは存在しません。どんなに細心の注意を払って完璧な思考をしていても、すべての要素を考慮することはできません。これは、あらゆる考慮の後に間違いを犯すいわゆる賢者です。同様に、コンピューターの世界も完璧ではありません。異常事態はいつでも発生する可能性があります。私たちがすべきことは、避けられる例外を回避し、避けられない例外に対処することだけです。ここでは、例外を使用して「完璧な世界」をプログラムする方法を記録します。

1. 例外を使用する理由 まず第一に、例外処理メカニズムによってプログラムの堅牢性が保証され、システムの可用性が向上することが明確になります。私たちはそれを見るのが特に好きではありませんが、その地位と役割を認識せずにはいられません。異常はプログラムに問題があることを示しており、時間内に修正するのに役立ちます。私たちのプログラミングでは、いつでもどこでも、何らかの理由で例外が発生する可能性があります。例外メカニズムがない場合は、次のように処理します。

例外が発生したかどうかを判断するには、関数の戻り値を使用します (この戻り値は通常一致します)。 )、関数を呼び出すプログラムは戻り値をチェックして分析する責任があります。例外問題は解決できますが、解決にはいくつかの欠点があります。

1. 混乱しやすい。合意された戻り値が -11111 である場合、それは例外を示していますが、プログラムの最終計算結果が実際に -1111 だったらどうなるでしょうか?

2. コードの可読性が低い。例外処理コードとプログラム コードを混在させると、コードが読みにくくなります。

3. 関数を呼び出して例外を分析するには、プログラマがライブラリ関数を深く理解している必要があります。

OO で提供される例外処理メカニズムは、コードの堅牢性を提供する強力な方法です。 例外メカニズムを使用すると、エラー処理コードの複雑さを軽減できます。例外を使用しない場合は、プログラム内のさまざまな場所で特定のエラーをチェックして処理する必要があります。例外を使用する場合は、その必要はありません。例外メカニズムによってエラーが確実に捕捉され、エラーは 1 か所 (いわゆる例外ハンドラー) で処理される必要があるため、チェックしてください。このアプローチは、コードを節約するだけでなく、通常の実行中に何をすべきかを概説するコードを、「何か問題が発生した場合の対処方法」を示すコードから分離します。要約すると、例外メカニズムにより、コードの読み取り、書き込み、デバッグが以前のエラー処理方法よりも体系的に行われるようになります。 (『考える』より抜粋 ジャワでは》)。勉強を始めたばかりの頃は、「間違っているかもしれないところは忘れずに付け加えてください」といつも言っていましたが、それでも理解が深まったばかりで、徐々にその例外を理解していきました。はとても重要です。

2. 基本的な定義

「Java で考える」では、例外は次のように定義されます: 例外状況とは、現在のメソッドまたはスコープの実行を継続できない問題を指します

。ここで 1 つ明確にしておく必要があるのは、例外コードがある程度間違っているということです。Java には例外処理メカニズムがありますが、例外処理メカニズムを「通常の」観点から見ることはできません。その理由は次のとおりです。ここでエラーが発生した場合、またはすでに発生している可能性があります。エラーが発生した場合、プログラムに異常な状況が発生し、プログラムが失敗する可能性があります。

それでは、いつ異常が起こるのでしょうか?プログラムが現在の環境で正常に実行できない場合、つまり、プログラムが問題を正しく解決できない場合にのみ、プログラムは現在の環境から飛び出し、例外をスローします。例外をスローした後、最初にいくつかのことを実行します。まず、new を使用して例外オブジェクトを作成し、次に例外が生成された場所でプログラムを終了し、現在の環境から例外オブジェクトへの参照をポップアップします。例外処理メカニズムはプログラムを引き継ぎ、プログラムの実行を継続するための適切な場所を探し始めます。この適切な場所は、プログラムをエラー状態から回復して、プログラムを実行できるようにすることです。または、別の方法で続けてください。

一般的に、例外処理メカニズムは、プログラム内で例外が発生した場合、プログラムを強制終了し、例外情報を記録し、この情報を私たちにフィードバックするものです。例外を処理するかどうかを決定します。 3. 例外システム

Java は非常に完璧な例外処理メカニズムを提供するため、例外を使用する前に、そのアーキテクチャを理解する必要があります。は、

http://www.php.cn/から引用されています)。上の図からわかるように、Throwable は Java 言語のすべてのエラーと例外のスーパー クラスです (すべてをスローできます)。これには、Error と Exception の 2 つのサブクラスがあります。 エラーとは、OutOfMemoryError、ThreadDeath など、プログラムでは処理できないエラーです。これが発生した場合、できることは放置して JVM に処理させることだけですが、ほとんどのエラーではこの場合、JVM はスレッドの終了を選択します。


例外は、プログラムが処理できる例外です。 CheckedException(検査済み例外)とUncheckedException(未検査例外)の2種類に分かれます。このうち、CheckException はコンパイル段階で発生するため、try...catch (または throws) を使用する必要があり、そうしないとコンパイルが通りません。 UncheckedException は実行時に発生するため不確実であり、主にプログラムのロジックの問題によって発生し、トラブルシューティングが困難なため、プログラムの設計では注意が必要です。よく考えてコードを書き、例外が発生してもできるだけ例外を処理するようにすると、プログラムが良い方向に発展するように努めることができます。


したがって: 回復可能な条件にはチェック済み例外 (CheckedException) を使用し、プログラムには実行時例外 (RuntimeException) を使用します。エラー(エラーは回復不可能であり、大きな間違いが犯されたことを意味します)。

Javaには例外クラスが本当に多すぎて、その原因も刻々と変化しているので、

次のブログ記事をまとめて、Javaでよく発生する例外を数えていきたいと思います。あなたは注意を払うでしょう! !

4. 異常な使用

インターネットでこんな面白い格言を読みました: 世界で最も本当の依存とは、あなたが努力していて、私がそれをキャッチしているときです。どんなに怒られても、黙って耐えて静かに対処します。初心者にとって、例外は try...catch です(私も初めて触れたときはそう思いました。例外に遭遇したときは try...catch です)。個人的には、try...catch が実際に最も使用されており、最も実用的であると感じています。

例外では、try ブロックには例外が発生する可能性のあるコード ブロックが含まれており、catch ブロックは例外をキャッチした後に例外を処理します。まず次の例を見てみましょう:

public class ExceptionTest {
    public static void main(String[] args) {
        String file = "D:\\exceptionTest.txt";
        FileReader reader;
        try {
            reader = new FileReader(file);
            Scanner in = new Scanner(reader);  
            String string = in.next();  
            System.out.println(string + "不知道我有幸能够执行到不.....");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println("对不起,你执行不到...");
        }  
        finally{
            System.out.println("finally 在执行...");
        }
    }
}
ログイン後にコピー

这是段非常简单的程序,用于读取D盘目录下的exceptionText.txt文件,同时读取其中的内容、输出。首先D盘没有该文件,运行程序结果如下:

java.io.FileNotFoundException: D:\exceptionTest.txt (系统找不到指定的文件。)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
    at java.io.FileInputStream.<init>(FileInputStream.java:66)
    at java.io.FileReader.<init>(FileReader.java:41)
    at com.test9.ExceptionTest.main(ExceptionTest.java:19)
对不起,你执行不到...
finally 在执行...
ログイン後にコピー

从这个结果我们可以看出这些:

1、当程序遇到异常时会终止程序的运行(即后面的代码不在执行),控制权交由异常处理机制处理。

2、catch捕捉异常后,执行里面的函数。

当我们在D盘目录下新建一个exceptionTest.txt文件后,运行程序结果如下:

1111不知道我有幸能够执行到不.....
finally 在执行...
ログイン後にコピー

11111是该文件中的内容。从这个运行结果可以得出这个结果:不论程序是否发生异常,finally代码块总是会执行。所以finally一般用来关闭资源。

在这里我们在看如下程序:

public class ExceptionTest {
    public static void main(String[] args) {
        int[] a = {1,2,3,4};
        System.out.println(a[4]);
        System.out.println("我执行了吗???");
    }
}
ログイン後にコピー

程序运行结果:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
    at com.test9.ExceptionTest.main(ExceptionTest.java:14)
ログイン後にコピー

各位请注意这个异常信息和上面的异常信息错误,为了看得更加清楚,我将他们列在一起:

java.io.FileNotFoundException: D:\exceptionTest.txt (系统找不到指定的文件。)
        Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
ログイン後にコピー

       在这里我们发现两个异常之间存在如下区别:第二个异常信息多了Exception in thread"main",这显示了出现异常信息的位置。在这里可以得到如下结论:若程序中显示的声明了某个异常,则抛出异常时不会显示出处,若程序中没有显示的声明某个异常,当抛出异常时,系统会显示异常的出处。

以上就是java提高篇(十六)-----异常(一)的内容,更多相关内容请关注PHP中文网(www.php.cn)!


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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

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の完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプ Java での日付までのタイムスタンプ Aug 30, 2024 pm 04:28 PM

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

See all articles