Java で例外タイプを処理する方法
1. 例外の説明
プログラムの実行中に予期しないイベントが発生し、プログラマの期待どおりにプログラムが正常に実行されない場合、これは例外です。例外が発生すると、プログラムは自動的に対処し、ただちに終了します。 Java の場合、Java のコンパイル中、操作中、または操作中に発生するエラー。
Java は、例外処理メカニズムというより優れたソリューションを提供します。
例外処理メカニズムを使用すると、例外が発生したときにプログラムがコードの事前設定された例外処理ロジックに従って対象を絞った方法で例外を処理できるため、プログラムは通常に戻り、可能な限り実行を継続できます。コードの明瞭さを維持しながら。
Java の例外は、関数内のステートメントが実行されるときに発生することも、プログラマが throw ステートメントを通じて手動でスローすることもできます。Java プログラムで例外が発生する限り、例外は対応する型のオブジェクトは例外をカプセル化するために使用され、JRE は例外を処理する例外ハンドラーを見つけようとします。
例外とは、実行時に発生する異常な状況を指します。
異常な状況が説明され、オブジェクトは Java のクラスの形式でカプセル化されます。
- #異常な状況を記述するクラスは例外クラスになります。
- 通常のコードと問題処理コードを分離して、読みやすさを向上させます。
- 実際、例外とは、Java がオブジェクト指向の考え方を通じて問題をオブジェクトにカプセル化し、例外クラスを使用して問題を記述するものです。
- hrowable: エラーかどうかに関係なく、スローされる可能性のある例外または、呼び出し元がそれを認識して処理できるように、問題が発生したときに例外をスローする必要があります。
- このシステムの特徴は、Throwable とそのすべてのサブクラスがスロー可能であることです。
- は 2 つのキーワードに反映されています。
- throws throw これら 2 つのキーワードで操作できるすべてのクラスとオブジェクトはスロー可能です。
- サブカテゴリ 1 通常は処理できません。 ————エラー
- 特徴: これは jvm によってスローされる深刻な問題です。この種の問題が発生した場合、通常は的を絞った方法で対処されず、プログラムは直接変更されました。
- サブクラス 2) はそれを処理できます。 ——例外として、問題は、誰が誰に投げても、呼び出し元に投げられます。
- 特徴: サブクラスの接尾辞名にはすべて親クラスの名前が接尾辞として付けられており、非常に読みやすくなっています。
- 注: クラスが例外クラスと呼ばれる場合、そのクラスは例外クラスを継承する必要があります。例外システムのサブクラスのみがスロー可能であるためです。
class FuShuIndex extends Exception{ //构造函数 和类名一样 FuShuIndex(){ } //定义一个带参数的构造函数 FuShuIndex(String msg){ //调用Exception中的带参数异常函数 super(msg); } } 主函数 throws FuShuIndex:{ int[] arr = new int[3]; method(arr,-7); } public static int method(int[] arr,int index) throws arrIndexexception { if (index<0){ throw new arrIndexexception("数组的角标不能为负数"); } return arr[index]; }
- この種の問題が発生すると、コンパイル時に検出して、この種の問題に応じて対処できるようにしたいと考えています。やり方。
- は処理できるかどうか、およびコンパイルに合格する可能性があります。実行時に検出されます!
- このような問題は、関数の続行ができず操作が実行できないという問題が発生しますが、その多くは呼び出しや内部状態の変化によって発生します。この種の問題は通常は対処されず、直接コンパイルされて渡されますが、実行時にプログラムは呼び出し元によって強制的に停止され、呼び出し元がコードを修正できるようになります。
- throws は関数で使用されます ————ステートメント
- throw は関数内で使用され、カンマで区切って複数のスローをスローできます。 ——Throws
- throws は例外クラスをスローし、複数の例外をスローできます。
- throw は例外オブジェクトをスローします。
try{ //需要被检测异常的代码 } catch(异常类 变量)//该变量用于接收发生的异常对象{ //处理异常代码 } finally{ //一定会被执行的代码 }
class FuShuIndex extends Exception{ //构造函数 和类名一样 FuShuIndex(){ } //定义一个带参数的构造函数 FuShuIndex(String msg){ //调用Exception中的带参数异常函数 super(msg); } }
{ int[] arr = new int[3]; try{ method(arr,-7); }catch(arrIndexexception a){ a.printStackTrace();//jvm默认的异常处理机制就是调用异常对象的这个方法。 System.out.println("数组的角标异常!!!");//自定义捕获后打印的信息 System.out.println(a.toString());//打印该异常对象的信息 System.out.println(a.getMessage());//获取我们自定义抛出所定义的信息 } } public static int method(int[] arr,int index) throws arrIndexexception { if (index<0){ throw new arrIndexexception("数组的角标不能为负数"); } return arr[index]; }
- 複数のキャッチの場合、親クラスのキャッチを最後に配置する必要があります。そうしないと、コンパイルが空になります。
- 関数の内容は catch を使用することで解決できます。
- 解決できない場合は、throw を使用して呼び出し元に通知すると、呼び出し元が解決します。
一个功能如果抛出了多个异常,那么调用时,必须有对应的多个catch来进行针对性处理。
内部有几个需要检测的异常,就抛几个异常,抛出几个就catch几个异常。
六、finally
通常用于关闭(释放)资源。必须要执行。除非jvm虚拟机挂了。
范例:出门玩,必须关门,所以将关门这个动作放在finally里面,必须执行。
凡是涉及到关闭连接等操作,要用finally代码块来释放资源。
try catch finally 代码块组合特点:
try catch finally:当有资源需要释放时,可以定义finally
try catch(多个):当没有资源需要释放时,可以不定义finally
try finally:异常处理不处理我不管,但是我得关闭资源,因为资源是我开的,得在内部关掉资源。
范例:
try{ //连接数据库 } //没有catch意思不处理异常,只单纯的捕获异常 finally{ //关闭连接 }
七、异常的应用
老师用电脑讲课范例:
电脑类:
public class Computer { private int state = 2; public void run() throws lanpingExcption,maoyanExcption{ if (state == 1){ throw new lanpingExcption("电脑蓝屏啦~"); }else if (state == 2){ throw new maoyanExcption("电脑冒烟啦~"); } System.out.println("电脑启动"); } public void chongqi(){ state = 0; System.out.println("重启电脑!"); } }
老师类:
public class Teacher { private String name; private Computer computer; Teacher(String name){ this.name = name; computer = new Computer(); } void teach() throws maoyanExcption{ try { computer.run(); System.out.println(this.name + "开始用电脑讲课了"); } catch (lanpingExcption l) { l.printStackTrace(); computer.chongqi(); teach();//重启后再次讲课 } catch (maoyanExcption m) { m.printStackTrace(); test(); throw m; } } public void test(){ System.out.println("大家自己练习去~"); } }
蓝屏异常类:
public class lanpingExcption extends Exception{ lanpingExcption (String msg){ super(msg); } }
冒烟异常类:
public class maoyanExcption extends Exception { maoyanExcption (String msg){ super(msg); } }
主函数:
public class Testmain { public static void main (String[] args){ Teacher teacher = new Teacher("丁老师"); try { teacher.teach(); } catch (maoyanExcption m) { //m.printStackTrace(); System.out.println("。。。。。"); } } }
八、异常的注意事项:
子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类。
如果父类抛出多个异常,那么子类只能抛出父类异常的子集。
子类覆盖父类,只能抛出父类的异常或者子类。
如果父类的方法没有抛出异常,子类覆盖时绝对不能抛。
以上がJava で例外タイプを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

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

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

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

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

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。
