溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在java中使用catch處理異常

發(fā)布時間:2021-02-24 15:15:59 來源:億速云 閱讀:261 作者:戴恩恩 欄目:開發(fā)技術(shù)

本文章向大家介紹如何在java中使用catch處理異常,主要包括如何在java中使用catch處理異常的使用實(shí)例、應(yīng)用技巧、基本知識點(diǎn)總結(jié)和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。

Java的特點(diǎn)有哪些

Java的特點(diǎn)有哪些 1.Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,實(shí)現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。 2.Java具有簡單性、面向?qū)ο蟆⒎植际?、安全性、平臺獨(dú)立與可移植性、動態(tài)性等特點(diǎn)。 3.使用Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。

import java.util.UUID; 
public class Test { 
 public static void main(String[] args) {
 try {
 int i = 2/0;
 } catch (Exception e) {
 e.printStackTrace();
 }
 
 try {
 System.out.println("try2");
 } catch (Exception e) {
 // TODO: handle exception
 }
 
// int i = 2/0;
// System.out.println("helo");
 } 
}

打印結(jié)果:

java.lang.ArithmeticException: / by zero
at Test.main(Test.java:8)

try2

import java.util.UUID; 
public class Test { 
 public static void main(String[] args) {
// try {
// int i = 2/0;
// } catch (Exception e) {
// e.printStackTrace();
// }
// 
// try {
// System.out.println("try2");
// } catch (Exception e) {
// // TODO: handle exception
// }
 
 int i = 2/0;
 System.out.println("helo");
 } 
}

異常如果沒有捕獲,將會終止執(zhí)行:

打印結(jié)果:

Exception in thread "main" java.lang.ArithmeticException: / by zero
at Test.main(Test.java:19)

補(bǔ)充:Java中catch和throw同時使用

一、應(yīng)用背景

在實(shí)際應(yīng)用中,處理異常往往需要更加復(fù)雜的處理——當(dāng)一個異常出現(xiàn)時,單靠某個方法無法完全處理該異常,必須由幾個方法協(xié)作才能完全處理該異常,也就是說,在異常出現(xiàn)的當(dāng)前方法中,程序只能對異常進(jìn)行部分處理,還有些處理需要在方法的調(diào)用者中才能完成,所以應(yīng)該再次拋出異常,讓該方法的調(diào)用者也能捕獲到異常。

為了實(shí)現(xiàn)這種通過多個方法協(xié)作處理同一異常的情形,可以catch塊中結(jié)合throw語句來完成。

二、應(yīng)用舉例

1 代碼示例

AuctionTest.java

public class AuctionTest
{
 private double initPrice = 30.0;
 // 因為該方法中顯式拋出了AuctionException異常,
 // 所以此處需要聲明拋出AuctionException異常
 public void bid(String bidPrice)
 throws AuctionException
 {
 double d = 0.0;
 try
 {
 d = Double.parseDouble(bidPrice);
 }
 catch (Exception e)
 {
 // 此處完成本方法中可以對異常執(zhí)行的修復(fù)處理,
 // 此處僅僅是在控制臺打印異常跟蹤棧信息。
 e.printStackTrace();
 // 再次拋出自定義異常
 throw new AuctionException("競拍價必須是數(shù)值,"
 + "不能包含其他字符!");
 }
 if (initPrice > d)
 {
 throw new AuctionException("競拍價比起拍價低,"
 + "不允許競拍!");
 }
 initPrice = d;
 }
 public static void main(String[] args)
 {
 AuctionTest at = new AuctionTest();
 try
 {
 at.bid("df");
 }
 catch (AuctionException ae)
 {
 // 再次捕捉到bid方法中的異常。并對該異常進(jìn)行處理
 System.err.println(ae.getMessage());
 }
 }
}

AuctionException.java

public class AuctionException extends Exception
{
 // 無參數(shù)的構(gòu)造器
 public AuctionException(){}  //①
 // 帶一個字符串參數(shù)的構(gòu)造器
 public AuctionException(String msg) //②
 {
 super(msg);
 }
}

2 運(yùn)行結(jié)果

java.lang.NumberFormatException: For input string: "df"
 at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
 at java.lang.Double.parseDouble(Double.java:510)
 at AuctionTest.bid(AuctionTest.java:16)
 at AuctionTest.main(AuctionTest.java:39)

到此這篇關(guān)于如何在java中使用catch處理異常的文章就介紹到這了,更多相關(guān)的內(nèi)容請搜索億速云以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持億速云!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI