Javaの学習の概要:19

キーワードをスローします

throwsキーワードは主にメソッド定義で使用され、このメソッドは例外を処理しないが、処理のために着信側に渡されることを示します。

例:スローを使用する

package com.study.Demo;

class MyMath{
    public static int div(int x,int y)throws Exception{	//此方法不处理异常
        return x/y;
    }
}
public class Test4 {
    public static void main(String args[]){
        try{	//div()方法抛出异常,必须明确进行异常处理
            System.out.println(MyMath.div(10,5));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
//结果
//2

ヒント:スローはmainメソッドでも使用できます。

例:メインメソッドでスローを使用する

package com.study.Demo;

class MyMath{
    public static int div(int x,int y)throws Exception{	//此方法不处理异常
        return x/y;
    }
}
public class Test4 {
    public static void main(String args[]) throws Exception{
    //表示此异常产生后会直接通过主方法抛出,代码中可以不强制使用异常处理
        System.out.println(MyMath.div(10,0));
    }
}
//结果
//Exception in thread "main" java.lang.ArithmeticException: / by zero
//	at com.study.Demo.MyMath.div(Test4.java:5)
//	at com.study.Demo.Test4.main(Test4.java:10)

キーワードを投げる

throwキーワードを使用すると、インスタンス化されたオブジェクトをユーザーが手動でスローできます。

例:手動で例外をスローする

package com.study.Demo;

public class Test4 {
    public static void main(String args[]){
        try{
            throw new Exception("自己定义的异常");
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
//结果
//java.lang.Exception: 自己定义的异常
//	at com.study.Demo.Test4.main(Test4.java:11)

例外処理の標準形式

例:

package com.study.Demo;

class MyMath{
    public static int div(int x,int y)throws Exception{	//出现异常要交给被调用处输出
        System.out.println("计算开始");
        int result=0;
        try{
            result=x/y;
        }catch (Exception e){
            throw e;	//向上抛
        }finally {
            System.out.println("计算结束");
        }
        return result;
    }
}
public class Test3 {
    public static void main(String args[]){
        try {
            System.out.println(MyMath.div(10,0));	//被调用处处理异常
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

RuntimeException类

RuntimeExceptionクラスの特性:
プログラムは、コンパイル時にユーザーに例外の処理を強制しません。ユーザーは自分のニーズに応じて例外を選択的に処理できますが、処理せずに例外が発生した場合、JVMはデフォルトで例外を処理します。

例:

package com.study.Demo;

public class Test4 {
    public static void main(String args[]){
        int temp=Integer.parseInt("100");
        System.out.println(temp);
    }
}
//结果
//100

このコードは正常に実行されますが、例外が発生すると、デフォルトの処理のためにJVMに渡されます。

キーワードを主張する

assertキーワードの主な機能は、アサーションを作成することです。アサーションとは、特定の行に対するプログラムの実行を指し、結果は期待される結果でなければなりません。
例:アサーションの使用を観察する

package com.study.Demo;

public class Test5 {
    public static void main(String args[]){
        int num=10;
        //假设中间可能经过了20行代码来操作num的内容,期望的内容应该是20
        assert num==20:"num的内容不是20";	//进行断言操作
        System.out.println("num="+num);
    }
}
//结果
//num=10

結果は例外ではありません。これは、Javaがデフォルトでアサーションを有効にしないためです。アサーションを有効にする場合は、以下を実行する必要があります。

1.対応するコントロールパネルを開き
ここに画像の説明を挿入
ます2. -eaと入力します
ここに画像の説明を挿入

カスタム例外

ユーザーが開発した例外クラス。
カスタム例外クラスを実装する場合は、ExceptionまたはRuntimeException親クラスを継承するだけで済みます。
例:AddExceptionを定義する

package com.study.Demo;

class AddException extends Exception{	//此异常类要强制处理
    public AddException(String msg){
        super(msg);	//调用父类构造
    }
}
public class Test5 {
    public static void main(String args[]){
        int num=20;
        try{
            if(num>10){	//出现了错误,应该产生异常
                throw new AddException("数值传递的过大");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
//结果
//com.study.Demo.AddException: 数值传递的过大
//	at com.study.Demo.Test5.main(Test5.java:13)
49件の元の記事が公開されました 高く評価されました25 訪問1528

おすすめ

転載: blog.csdn.net/weixin_45784666/article/details/104414321
おすすめ