天天看點

【java】throws和throw差別

throws:用來聲明一個方法可能産生的所有異常,不做任何處理而是将異常往上傳,誰調用我我就抛給誰。

  用在方法聲明後面,跟的是異常類名

  可以跟多個異常類名,用逗号隔開

  表示抛出異常,由該方法的調用者來處理

  throws表示出現異常的一種可能性,并不一定會發生這些異常

throw:則是用來抛出一個具體的異常類型。

  用在方法體内,跟的是異常對象名

  隻能抛出一個異常對象名

  表示抛出異常,由方法體内的語句處理(該方法體trycatch或者throws)

  throw則是抛出了異常,執行throw則一定抛出了某種異常  

分别介紹

throws在方法後邊聲明異常,其實就是自己不想對異常做出任何的處理,告訴别人自己可能出現的異常,交給别人處理,然别人處理

package com.xinkaipu.Exception;

class Math{

    public int div(int i,int j) throws Exception{

        int t=i/j;

        return t;

    }

}

public class ThrowsDemo {

    public static void main(String args[]) throws Exception{

        Math m=new Math();

   }

}

throw:就是自己處理一個異常,有兩種方式要麼是自己捕獲異常try...catch代碼塊,要麼是抛出一個異常(throws 異常)

package com.xinkaipu.Exception;

public class TestThrow

{

    public static void main(String[] args) 

    {

        try

        {

            //調用帶throws聲明的方法,必須顯式捕獲該異常

            //否則,必須在main方法中再次聲明抛出

            throwChecked(-3);            

        }

        catch (Exception e)

        {

            System.out.println(e.getMessage());

        }

        //調用抛出Runtime異常的方法既可以顯式捕獲該異常,

        //也可不理會該異常

        throwRuntime(3);

    }

    public static void throwChecked(int a)throws Exception

    {

        if (a > 0)

        {

            //自行抛出Exception異常

            //該代碼必須處于try塊裡,或處于帶throws聲明的方法中

            throw new Exception("a的值大于0,不符合要求");

        }

    }

    public static void throwRuntime(int a)

    {

        if (a > 0)

        {

            //自行抛出RuntimeException異常,既可以顯式捕獲該異常

            //也可完全不理會該異常,把該異常交給該方法調用者處理

            throw new RuntimeException("a的值大于0,不符合要求");

        }

    }

}

————————————————

版權聲明:本文為CSDN部落客「kobe-fly」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_38011265/article/details/79149313