自定義異常java
Ⅰ 在java中如何創建一個自定義異常
自定義異常類型賀兆是從Exception類中派生的,所以要使用下面的聲明語句來攔拍虧創建:
<class><自定義異常名><extends><簡神Exception>{...}
Ⅱ java自定義異常拋出
分類: 電腦/網路 >> 程序設計 >> 其他編程茄攜語言
問題描述:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
自定義異常類
class NumException extends Exception{
public String toString(){
return "輸入的值太小";
}
public String shuru(){
return "請輸入數字";
}
}
class jisuanqi extends JFrame implements ActionListener,ItemListener{
JRadioButton rz;
JRadioButton rm;
ButtonGroup bg;
JTextField txt;
JButton btnj;
String msg;
jisuanqi(){
super("計算器");
rz=new JRadioButton("周長");
rm=new JRadioButton("面積");
bg=new ButtonGroup();
txt=new JTextField();
btnj=new JButton("計算");
msg="";
this.getContentPane().setLayout(new GridLayout(2,2));
bg.add(rz);
bg.add(rm);
this.getContentPane().add(rz);
this.getContentPane().add(rm);
this.getContentPane().add(txt);
this.getContentPane().add(btnj);
this.setSize(200,200);
rz.addItemListener(this);
rm.addItemListener(this);
btnj.addActionListener(this);
}
實現介面
public void actionPerformed(ActionEvent e) throws NumException{聲明異常
if (Double.parseDouble(txt.getText())<=0){
throw new NumException();拋出異常
}
if (msg.equals("周長")){
txt.setText(""+(3.14*2*Double.parseDouble(txt.getText())));
}
if (msg.equals("面積")){
txt.setText(""+3.14*(Double.parseDouble(txt.getText())*Double.parseDouble(txt.getText())));
}
}
實現介面
public void itemStateChanged(ItemEvent e){
if (e.getSource()==rz){
msg="周長";
}
if (e.getSource()==rm){
msg="面積";
}
}
public static void main(String args[]){
try{
jisuanqi js=new jisuanqi();
js.setVisible(true);
}
catch(NumException ex){
System.out.println(ex);
}
}
}
編譯時出現:
C:\Documents and Settings\Administrator\桌面\新建文件夾茄納激\jisaunqi.java:45: jisuanqi 中顫襪的 actionPerformed(java.awt.event.ActionEvent) 無法實現 java.awt.event.ActionListener 中的 actionPerformed(java.awt.event.ActionEvent);被覆蓋的方法不拋出 NumException
解析:
這段代碼有問題:
實現介面
public void actionPerformed(ActionEvent e) throws NumException{聲明異常
public void actionPerformed(ActionEvent e)不應該拋出異常, ActionListener介面函數沒有異常拋出
一種可能的解決方法是把判斷移到另外一個函數中,然後拋出異常,在actionPerformed中捕獲或者在外面捕獲
Ⅲ Java自定義異常,應該繼承Exception還是Runtime Exception,為什麼
/*
RuntimeException屬於Exception的子類
Exception是在編譯時冊蠢茄候如果有異常就可州察以檢查出來,比較嚴謹!
RuntimeException比較特殊,他及其子類對象,屬於運行時候檢查的異常,如果語法沒有錯誤
他不會在編譯時候報異常的,只有運行的時候才會拋出異常!
至於繼承誰,得看你的類具體的功能,其實這兩點已經說的很明確了,如檔皮果你繼承了Exception
要麼拋出去給上級調用者,要麼調用異常代碼的時候進行捕捉,有相對應的處理方式!
如果繼承的是RuntimeException,可以不用拋,也可以不用捕捉但是問題是在運行的過程中才會
展現出來!一但出錯,後面程序將無法繼續運行!
*/
Ⅳ java拋出的異常里如何返回多個message
在Java中,可以通過創建自定義異常類來實現在拋出異常時返回多個message。自定義異常類可以繼承Java的Exception類或者RuntimeException類,然後在大毀該類中添加自己需要的屬性和方法。
以下是一個自定義異常類的示例,其中包含了兩個message:
public class CustomException extends Exception {
private String message1;
private String message2;
public CustomException(String message1, String message2) {
this.message1 = message1;
this.message2 = message2;
}
public String getMessage1() {
return message1;
}
public String getMessage2() {
return message2;
}
}
在拋出自定義異常時,可以使用該異常類的構造函數傳遞需要的message參數,如下所示:
public class Example {
public void exampleMethod() throws CustomException {
String message1 = "This is message 1";
String message2 = "譽衫This is message 2";
if (someCondition) {
throw new CustomException(message1, message2);
}
}
}
在滾虛備上述示例中,如果滿足條件,將拋出CustomException異常,並且該異常將包含message1和message2兩個屬性的值。在捕獲CustomException異常時,可以通過調用getMessage1()和getMessage2()方法來獲取這兩個message的值。
Ⅳ Java 求大神們解答:自定義異常,處理異常
Java 允許我們定義自己的異常,這樣的異常就稱為自定義異常。定義自定義異常的方式是繼承 Exception 類,然後定義一個類來代表該異常。
下面是定義自定義異常類的示例:
================
public class MyException extends Exception {
public MyException() {
super();
}
public MyException(String message) {
super(message);
}
}
================
這里定義了一個名為 MyException 的類,它繼承了 Exception 類,並定義了兩個構造方法,一個是無參構造方法,另一個是帶有一個字元串參數的構造方法,該字元串參數用於傳入錯誤信息。
接下來,我們可以在可能拋出異常的方法中使用 throws 關鍵字聲明該方法可能拋出的異常,並在方法中使用 throw 語句拋出異常。例如:
================
public class UsingMyException {
public void f() throws MyException {
System.out.println("拋出異常MyException 從 f()方法");
throw new MyException();
}
public void g() throws MyException {
System.out.println("拋出異常MyException 從 g()方法");
throw new MyException("從g()方法中拋出異常");
}
}
================
這里我們定義了一個名為 UsingMyException 的類,它包含兩個方法: f() 和 g()。兩個方法都使用了 throws 關鍵字聲明它們可能會拋出 MyException 異常,並在方法內部使用 throw 語句拋出該異常
Ⅵ 如何編寫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);
}
}
下面是應用這個自定義異常類的例子:
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);
}