ホームページ Java &#&チュートリアル Java 基本値: 例外処理キーワード...

Java 基本値: 例外処理キーワード...

Jun 26, 2017 am 11:46 AM
java キーワード ベース 対処する 異常な

Java言語は、ガベージコレクション機構、メモリモデル、例外処理、強力な型変換、クロスプラットフォームなど、非常に堅牢であることがJava言語の人気を高めていると言われています。今日はまず、Java の例外処理メカニズムについて説明します。 try、catch、finally、throw、throws 通常、私たちはこれら 5 つのキーワードを過小評価しているようです。アプリケーション システムを開発する場合、適切な例外処理は、その後のシステムの開発、メンテナンス、アップグレード、およびユーザー エクスペリエンスにとって特に重要です。

例外には非常に重要な機能があります。例外が発生した場所から最上位のメインメソッドまでキャッチしないと、最終的に JVM が例外メッセージをスローします。最悪の事態は、スレッドが中断されることです。その後コードは実行されなくなり、JVM の広大な海に静かに消えていきます。当社の以前のプロジェクトでは、フロントエンド Ajax がコントロールに支払いを要求しました。コントロールのキャッチが null ポインターをスローしたため、フロントエンド ページがスタックしました。解決策: コントロール層は通常、最上位層です。例外が発生した場合、他の最上位以外の層はスローを続行するか、上向きにスローすることができます。また、各 ajax にタイムアウトを設定することをお勧めします。

throw と throws について簡単に紹介します。

throw: メソッド本体で例外をスローします。通常、Throws はメソッドを示すためにメソッド名の後に配置されます。例外が発生した場合、処理したくない、または処理できない場合は、呼び出し元に処理を任せることができます。ClassNotFoundException、NumberFromartException、throws、throw+try などのランタイム例外 (未チェック) をスローすることができます。 throw+throws は、次のようなチェック例外を処理します。 IOExcepion、SocketException、継承例外クラスなどの例外。違いは、チェックされた例外は処理する必要がある (try または throw のいずれかがスローされ続けるため、コンパイルは成功しません) のに対し、実行時例外は処理する必要がないという点です。例外を処理しないと、例外が発生した後に次のような結果が生じます。 jvm は例外メッセージを報告し、スレッドは中断されます。 throw および throws キーワードは通常、コード内で使用することはお勧めできません。また、すべての例外をその場で解決することをお勧めします。使い方だけ知っていれば、あまり説明する必要はありません。

組み合わせルールを試す: 1、try{}catch(){} 2、try{}catch(){}finally{} 3、try{}finally{}、1 と 2 には複数の catch を含めることができます

友達、栗を食べます:

1、組み合わせを試しません

public class CatchExecuteJustOne {

public void methodOne(){
System.out.println("into methodOne method");
int one=1/ CatchExecuteJustOneS();
cejo.methodOne();

System.out.println("end main method"); //出力なし、試行組み合わせなし、エラースレッドが切断されました
}
}

出力:


methodOneメソッドへ
スレッド「メイン」の例外 java.lang.ArithmeticException: / by zero

at priv.lilei.Exception.example_1.CatchExecuteJustOneS.methodOne(CatchExecuteJustOneS.java:6)

at priv.lilei.Exception.example_1.CatchExecuteJustOne. .java:19)



2.1、tryの組み合わせケース1があります

public class CatchExecuteJustOne {

public void methodOne(){

System.out.println("into methodOne Method");

try{

int one =1/0;

}catch(Exception e){
System.out.println("methodOne try to");
}
System.out.println("end methodOne method");
}

public static void main(String[] args) {
CatchExecuteJustOne cejo = new CatchExecuteJustOne();
cejo.methodOne();
System.out.println("end main Method");
}
}

出力:

into MethodOne Method
methodOne を試してみます

end methodOne メソッド

メインメソッドを終了

2.2、組み合わせケース 2 を試してみます

public class CatchExecuteJustOne {
public void methodOne(){

System.out.println("into methodOne method") ;

int one=1/0;

System.out.println("end methodOne method"); //スレッドは実行されず、エラーが報告されて直接スローされます

}

public static void main (String[] args ) {
try{
CatchExecuteJustOne cejo = new CatchExecuteJustOne();
cejo.methodOne();
}catch(Exception 例外){
System.out.println("into main method catch") / /will を実行します 上記のメソッドによって報告された例外を実行します
}
System.out.println("end main method") //上記のメソッドによって報告された例外を実行します
}
}

出力:

methodOne メソッドへ
main メソッド catch へ
main メソッド終了

2.3、try case の組み合わせ 3 例外は、最新の catch によって 1 回だけキャッチされます。 switch case の構文は if() if else(){} if()else if{}

public class CatchExecuteJustOne {
public void methodOne(){
System.out.println("into methodOneメソッド") ;
try{
int one=1/0;
}catch(ArithmeticException e){
System.out.println("catch 1");
}catch (Exception e) {
System.out.println ("catch 2");//前の catch 1 は実行されません
}
}

public static void main(String[] args) {
CatchExecuteJustOne cejo = new CatchExecuteJustOne();

try {
cejo.methodOne ();
} catch (Exception e) {
System.out.println("man catch");//既に実行されている catch 1 は実行されません
}

System.out.println("end main method") ;
}
}

出力:

intomethodOneメソッド
catch1
endmainメソッド

2.4 tryの組み合わせケース4、try{}finally{}の組み合わせがあり、最終的に返せなかった場合、スレッドは切断されますvalue ですが、finally に戻り値がある場合、スレッドは切断されませんが、後続のコードは実行されません。この組み合わせは慎重に使用することをお勧めします。

//戻り値なし

public class CatchExecuteJustOne {
public void methodOne(){ //戻り値なし
System.out.println("into methodOne Method");
try{
int one=1 /0;
}finally{
System.out.println("into methodOnefinally");
}
System.out.println("end methodOne method") // 次の場合はスレッドを実行せずに直接スローします。エラーが報告されます
}

public static void main(String[] args) {
CatchExecuteJustOne cejo = new CatchExecuteJustOne();
cejo.methodOne();
System.out.println("end main Method");/ /No 実行スレッドはエラーを報告し、切断され、戻り値なしで
}
}

出力を直接スローしました:

intomethodOne メソッド
Exception in thread "main" into methodOnefinally
java.lang.ArithmeticException: / by zero
priv .lilei.Exception.example_1.CatchExecuteJustOne.methodOne(CatchExecuteJustOne.java:14) の場合
priv.lilei.Exception.example_1.CatchExecuteJustOne.main(CatchExecuteJustOne.java:23) の場合

の戻り値:

public class CatchExecuteJustOne {
public String methodOne(){
System.out.println("into methodOne method");
try{
System.out.println("1");
int one=1/0;
System .out. println("2");//実行スレッドはエラーを報告せず、切断されて直接スローされます
}finally{
System.out.println("into methodOnefinally");//
return "1";
}
}

public static void main(String[] args) {
CatchExecuteJustOne cejo = new CatchExecuteJustOne();
cejo.methodOne();
System.out.println("end mainメソッド");// 実行されます 上記の try があり、メソッドには戻り値があるため
}
}

戻り値の出力があります。メソッド



2.5 では、finally との組み合わせは常に Execution となり、戻り値がある場合は、system.exit(0) などの特に激しい動作がない限り、戻る前に実行されます。 、またはメモリオーバーフローなどのエラーが発生しています。

return組み合わせ

2.5.1 以下の2つのケースでは、例外が発生していない場合と、例外が発生した場合とで、catchと最後に再度変数に値を代入する際に違いがあります。例外がない場合、割り当ては再び失敗しますが、例外がある場合、割り当ては再び成功します。

1 例外はありません

public class CatchExecuteJustOne {

public String methodOne(){ String a=""; System.out.println("into methodOne method");

try{

a= "a";
return a;
}catch(ArithmeticException e){
System.out.println("catch 1");
}finally {
System.out.println(1);
a="a2 "; //エラーが報告されない場合、値は a;
System.out.println(2);
}
System.out.println(3); // 上記の return メソッドは実行されず、メソッドが返されました
return a;
}

public static void main(String[] args) {
CatchExecuteJustOne cejo = new CatchExecuteJustOne();
System.out.println(cejo.methodOne());
}
}

try return None 異常事態の出力:

intomethodOneメソッド
1

2

a


2 異常事態があります

public class CatchExecuteJustOne {
public String methodOne(){
String a="";
System.out.println("into methodOne method");
try{
a="a";
int i=1/0 ;
return a;
}catch(ArithmeticException e){
System.out.println("catch 1");
}finally {
System.out.println(1);
a="a2"; //はい例外は変数に再割り当てされます
System.out.println(2);
}
System.out.println(3); //例外は、上記の最初の return からではなく、から出力およびキャプチャされます。次の 1 つは return return
return a;
}

public static void main(String[] args) {
CatchExecuteJustOne cejo = new CatchExecuteJustOne();
System.out.println(cejo.methodOne());
}
}

try の戻りに異常な出力があります:

into methodOne method
catch 1
1
2
3
a2

以上がJava 基本値: 例外処理キーワード...の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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:26 PM

Java の平方根のガイド。ここでは、Java で平方根がどのように機能するかを、例とそのコード実装をそれぞれ示して説明します。

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

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

Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

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

ジャワのウェカ ジャワのウェカ 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つの操作を実行する端末操作です。その設計意図はです

See all articles