本文目錄一覽:
- 1、java自定義異常類
- 2、JAVA 自定義異常是怎麼使用的?
- 3、java 如何自定義異常 用代碼展示 真心靠譜
- 4、如何用Java程序來編寫一個異常?
- 5、如何編寫和應用Java的自定義異常類
- 6、Java用戶自定義異常處理
java自定義異常類
public void MyException extends Exception{
public MyExceprion(){
System.out.println(“自定義異常”);
}
}
public class Exam{
public static void mul() throws MyException{
if(自己寫條件){
throw new MyException();
}
}
}
這個應該能看懂吧,我只是寫了個結構沒寫完整程序的,你看懂這個就行,定義一個自定義異常,然後在你需要的地方拋出異常,在主方法中調用方法的時候達到一定條件就會拋出異常
JAVA 自定義異常是怎麼使用的?
throws是用來聲明一個方法可能拋出的所有異常信息
throw則是指拋出的一個具體的異常類型。
通常在一個方法(類)的聲明處通過throws聲明方法(類)可能拋出的異常信息,而在方法(類)內部通過throw聲明一個具體的異常信息。
throws通常不用顯示的捕獲異常,可由系統自動將所有捕獲的異常信息拋給上級方法;
throw則需要用戶自己捕獲相關的異常,而後在對其進行相關包裝,最後在將包裝後的異常信息拋出。
java 如何自定義異常 用代碼展示 真心靠譜
首先自定義一個異常類 public class ActionException extends Exception{ public String returnMessage; public ActionException(String returnMessage){ this.returnMessage = returnMessage; } public String getReturnMessage(){ return this.returnMessage; } 代碼中如果用到這個自定義的異常類,這裡的代碼只是做了個演示 private void validate(int a,int b)throws ActionException{ if(ab){ throw new ActionException(“a b”); } if(ab){ throw new ActionException(“a b”); } } 業務邏輯代碼中 public String process(){ try{ validate(a,b); }catch(ActionException ae){ System.out.println(ae.getReturnMessage()); } }
如何用Java程序來編寫一個異常?
class
MyException
extends
Exception
//自定義的異常類
繼承Exception類
{
private
String
exceptionName;
//定義一個私有變量,用來為自定義異常
public
MyException(){}
//創建一個無參數的構造函數
public
MyException(String
exceptionName){
//創建一個有參數的構造函數,傳入的參數為前面定義的異常名稱
this.exceptionName=exceptionName;
}
public
String
getExceptionName(){
//定義一個方法,提供給外部來獲取私有變量
return
this.exceptionName;
}
public
static
void
main(String
[]
args){
try{
System.out.println(“自定義的異常類對象”);
throw
new
MyException(“自定義的異常”);//拋一個自定義的異常類對象,傳入的參數就是給控制台看的異常
}catch(MyException
e){
System.out.println(“異常信息:”+e.getExceptionName());
}
}
}
我已經儘力你……你懂的!
如何編寫和應用Java的自定義異常類
編寫自定義異常類實際上是繼承一個API標準異常類,用新定義的異常處理信息覆蓋原有信息的過程。常用的編寫自定義異常類的模式如下:
public class CustomException extends Exception { //或者繼承任何標準異常類 public CustomException() {} //用來創建無參數對象
public CustomException(String message) { //用來創建指定參數對象
super(message); //調用超類構造器
} 當然也可選用Throwable作為超類。
其中無參數構造器為創建缺省參數對象提供了方便。第二個構造器將在創建這個異常對象時提供描述這個異常信息的字符串,通過調用超類構造器向上傳遞給超類,對超類中的toString()方法中返回的原有信息進行覆蓋。來討論一個具體例子。假設程序中需要驗證用戶輸入的表示年齡的數據必須是正整數值。我們可以按照以上模式編寫這個自定義異常類如下: public class NegativeAgeException extends Exception { //或者:extends Throwable public NegativeAgeException() {} public NegativeAgeException(String message) { super(message); }} 下面是應用這個自定義異常類的例子: //完整程序存在本書配套資源目錄為Ch11中名為NegativeAgeExceptionTest.java…try{ String ageString = JOptionPane.showInputDialog(“Enter your age: “); if (Integer.parseInt(ageString) 0) throw new NegativeAgeException(“Please enter a positive age”); else JOptionPane.showMessageDialog(null, ageString, “Age”, 1);}catch(NegativeAgeException e){ System.out.println(e);}… 或者,可以創建一個缺省對象,然後在catch中打印具體信息,如: throw new NegativeAgeException(); …catch (NegativeAgeException e) { System.out.println(“Please enter a positive age”); 將產生與第一個例子相同的效果。
11.7.2 自定義異常處理
無論是利用標準API異常類來處理特殊的異常,或者編寫自定義的異常類來達到同樣目的,問題的關鍵是:!–[if !supportLists]–1.span times=”” new=”” roman’;=”” font-size-adjust:=”” none;=”” font-stretch:=”” normal;=”” x-system-font:=”” none”=”” style=”padding: 0px” !–[endif]–當這個異常發生時,如何及時捕獲這個異常。!–[if !supportLists]–2.span times=”” new=”” roman’;=”” font-size-adjust:=”” none;=”” font-stretch:=”” normal;=”” x-system-font:=”” none”=”” style=”padding: 0px” !–[endif]–捕獲這個異常後,如何產生精確的異常處理信息。 毋庸置疑,我們不可能期待JVM自動拋出一個自定義異常,也不能夠期待JVM會自動處理一個自定義異常。發現異常、拋出異常以及處理異常的工作必須靠編程人員在代碼中利用異常處理機制自己完成。一般情況下,發現和拋出一個自定義異常通過在try程序塊中利用if和throw語句完成,即: try { … if (someExceptionConditon == true) { throw new CustomException(“A custom exception xxx occurred. Please check your entry…”) … }catch (CustomException e) { …} 而打印異常處理信息可以在拋出時包括在構造器的參數中,或者包括在處理這個異常的catch中。另外應該注意在自定義異常發生之前,有可能產生標準異常的情況。例如,在一個需要驗證年齡必須是正整數值的程序中,利用自定義異常類,如NegativeAgeException,驗證輸入的年齡是否正整數,即: try { … if (Integer.parseInt(ageString) 0) throw NegativeAgeException(“Please enter a positive age”); else … } catch (NumberFormatException e) { System.out.println(e); } catch (NegativeAgeException e) { System.out.println(e); } … 注意在這個代碼中,如果ageString是非法整數字符串,如「25ab」,系統將首先拋出NumberFormatException,而不會執行throw NegativeAgeException(“Please enter a positive age”)。所以應該在catch中加入對NumberFormatException的處理,如以上代碼所示。
本文出自 「海外咖啡豆 – 高永強的博客天地」 博客
Java用戶自定義異常處理
一、第一種定義方式,繼承Exception類
public class MyFirstException extends Exception {
public MyFirstException() {
super();
}
public MyFirstException(String msg) {
super(msg);
}
public MyFirstException(String msg, Throwable cause) {
super(msg, cause);
}
public MyFirstException(Throwable cause) {
super(cause);
}
//自定義異常類的主要作用是區分異常發生的位置,當用戶遇到異常時,
//根據異常名就可以知道哪裡有異常,根據異常提示信息進行修改。
}
二、 第二種定義方式:繼承Throwable 類
public class MySecondException extends Throwable {
public MySecondException() {
super();
}
public MySecondException(String msg) {
super(msg);
}
public MySecondException(String msg, Throwable cause) {
super(msg, cause);
}
public MySecondException(Throwable cause) {
super(cause);
}
}
三、測試
/**
* 自定義異常類的使用
* @author new
*
*/
public class TestMyException {
public static void firstException() throws MyFirstException{
throw new MyFirstException(“\”firstException()\” method occurs an exception!”);
}
public static void secondException() throws MySecondException{
throw new MySecondException(“\”secondException()\” method occurs an exception!”);
}
public static void main(String[] args) {
try {
TestMyException.firstException();
TestMyException.secondException();
} catch (MyFirstException e1){
System.out.println(“Exception: ” + e1.getMessage());
e1.printStackTrace();
} catch (MySecondException e2){
System.out.println(“Exception: ” + e2.getMessage());
e2.printStackTrace();
}
//當一個try塊後面跟着多個catch塊時,如果發生的異常匹配第一個catch塊的參數,便將異常處理權利交給第一個catch塊。
//如果發生的異常與第一個catch塊不匹配,便看是否與第二個catch塊匹配,依次下去,如果到最後依然無法匹配該異常,
//便需要在方法聲明中添加一條throw語句,將該異常拋出。
//因此,在有多個catch塊,而且每次處理的異常類型具有繼承關係時,應該首先catch子類異常,再catch父類異常。
//比如,如果MySecondException繼承MyFirstException,那麼最好將catch (MySecondException e2)放在前面,
//把catch (MyFirstException e1)放在後面。
}
原創文章,作者:NEOM,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/131427.html