java自定義異常
A. 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中捕獲或者在外面捕獲
B. java 自定義異常 aop捕獲怎麼返回給control層
1)先定義一個類繼承Exception(或者別的RuntimeException等);
2)然後寫個方法可能拋出這個異常,並且什麼情況下會拋出異常;
3)調用這個方法,寫try,catch語句,捕獲這擾掘個異常;
小例子,參瞎滾考看下緩神核:
class UserNotFoundException extends RuntimeException {
public UserNotFoundException() {}
public UserNotFoundException(String message) {
super(message);
}
public void f() throws UserNotFoundException {
throw new UserNotFoundException("用戶名不對");
}
}
public class Exception {
public static void main(String args[]) {
try {
new UserNotFoundException().f();
} catch (UserNotFoundException e) {
System.out.println(e.getMessage());
}
}
}
C. 如何用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());
}
}
}
我已經盡力你……你懂的!
D. 如何編寫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);
}
E. JAVA自定義異常怎樣獲取行數
你可能不能獲取行數模賣灶,java是在遇到異常就拋出,你的捕獲代碼只能捕獲到時什麼異常。但是如果你是想捕獲輸入的數字,你可以先自己分析,然後由自己的異常拋出。例如配鄭你用Scanner讀取整數,一般是這樣Scanner input = new Scanner(System.in);int a = input.nextInt();現在你可以用String str=input.next()的方式先讀入一個字元串,然後分析這個字元串是不是都是數字,如果不是,你可以把你得到的這個字元串封裝在你自己定義的異常中拋出,然後捕獲的時候就能輸出旦扮這個數。
F. 在JAVA中如何創建一個自定義異常
自定義異常類型賀兆是從Exception類中派生的,所以要使用下面的聲明語句來攔拍虧創建:
<class><自定義異常名><extends><簡神Exception>{...}
G. Java自定義異常,應該繼承Exception還是Runtime Exception,為什麼
/*
RuntimeException屬於Exception的子類
Exception是在編譯時冊蠢茄候如果有異常就可州察以檢查出來,比較嚴謹!
RuntimeException比較特殊,他及其子類對象,屬於運行時候檢查的異常,如果語法沒有錯誤
他不會在編譯時候報異常的,只有運行的時候才會拋出異常!
至於繼承誰,得看你的類具體的功能,其實這兩點已經說的很明確了,如檔皮果你繼承了Exception
要麼拋出去給上級調用者,要麼調用異常代碼的時候進行捕捉,有相對應的處理方式!
如果繼承的是RuntimeException,可以不用拋,也可以不用捕捉但是問題是在運行的過程中才會
展現出來!一但出錯,後面程序將無法繼續運行!
*/
H. 求解java中在什麼情況下需要用到自定義異常
class NotScoreException extends Exception
{
public NotScoreException()
{
super();
}
public NotScoreException(String message)
{
super(message);
}
}
public class MyExceptionTest
{
public static String getGrade(double score)throws NotScoreException
{
if(score<=100&&score>=60)
{
return "及格";
}
else if(score<60&&score>蘆敗=0)
{
return "不及格";
}
else
{
throw new NotScoreException("陪旅顫輸入鎮旁成績有誤");
}
}
public static void main(String[] args)
{
try
{
System.out.println("75分的等級為:"+getGrade(75));
System.out.println("105分的等級為:"+getGrade(105));
}
catch (NotScoreException e)
{
System.out.println("發生自定義異常,異常信息為:"+e.getMessage());
}
}
}
I. 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 語句拋出該異常
J. java中在catch中拋出自己定義的異常
通過throw拋出自定義異常
1、定義一個自定義鍵慶孫異常類
{//或者繼承任何標准異常類
publicCustomException(){}//用來創建無參數對象
publicCustomException(Stringmessage){//用來創建指定參數對象
super(message);//調用超類構差絕造器
}
}
2、拋出異常
try{
//執行語句
}catch(Exceptionex){
thrownewCustomException("稿鏈自定義異常");//在catch中拋出自定義異常
}