真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼拋出異常 java異常的拋出捕獲并處理

java拋出異常

拋出異常分為兩種吧,一種是制造異常,一種是拋出可能發(fā)生的異常

創(chuàng)新互聯(lián)專(zhuān)注于阜平企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,電子商務(wù)商城網(wǎng)站建設(shè)。阜平網(wǎng)站建設(shè)公司,為阜平等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站開(kāi)發(fā),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

throw關(guān)鍵字,拋出一個(gè)異常(即制造一個(gè)異常),用法 throw 異常 ,該異常必須為java.lang.Exception的子類(lèi),如果是RuntimeException子類(lèi)的話(huà),則不需要捕獲或拋出異常。

throws關(guān)鍵字,拋出一個(gè)可能發(fā)生的異常,用在函數(shù)定義中,末尾處,以主函數(shù)為例子,public static void main(String[] args) throws 異常; 該異常必須為Exception子類(lèi),常用于其子類(lèi),是這一個(gè)方法體執(zhí)行中可能拋出(throw)的異常處理。如果不進(jìn)行throws,也可以用try...catch語(yǔ)句進(jìn)行捕獲。

自定義異常,類(lèi)一定(間接)繼承java.lang.Exception類(lèi),當(dāng)然,繼承java.lang.RuntimeException就可以不用進(jìn)行處理,下面舉一個(gè)例子:

public class TestException extends Exception {

public TestException(String message) {

super(message);

}

public TestException() {}

}

一般自定義異常需要有2個(gè)構(gòu)造函數(shù),五參構(gòu)造器和String類(lèi)型構(gòu)造器,有參構(gòu)造調(diào)用父類(lèi)有參構(gòu)造。

java自定義異常拋出

分類(lèi): 電腦/網(wǎng)絡(luò) 程序設(shè)計(jì) 其他編程語(yǔ)言

問(wèn)題描述:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

自定義異常類(lèi)

class NumException extends Exception{

public String toString(){

return "輸入的值太小";

}

public String shuru(){

return "請(qǐng)輸入數(shù)字";

}

}

class jisuanqi extends JFrame implements ActionListener,ItemListener{

JRadioButton rz;

JRadioButton rm;

ButtonGroup bg;

JTextField txt;

JButton btnj;

String msg;

jisuanqi(){

super("計(jì)算器");

rz=new JRadioButton("周長(zhǎng)");

rm=new JRadioButton("面積");

bg=new ButtonGroup();

txt=new JTextField();

btnj=new JButton("計(jì)算");

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);

}

實(shí)現(xiàn)接口

public void actionPerformed(ActionEvent e) throws NumException{聲明異常

if (Double.parseDouble(txt.getText())=0){

throw new NumException();拋出異常

}

if (msg.equals("周長(zhǎng)")){

txt.setText(""+(3.14*2*Double.parseDouble(txt.getText())));

}

if (msg.equals("面積")){

txt.setText(""+3.14*(Double.parseDouble(txt.getText())*Double.parseDouble(txt.getText())));

}

}

實(shí)現(xiàn)接口

public void itemStateChanged(ItemEvent e){

if (e.getSource()==rz){

msg="周長(zhǎng)";

}

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);

}

}

}

編譯時(shí)出現(xiàn):

C:\Documents and Settings\Administrator\桌面\新建文件夾\jisaunqi.java:45: jisuanqi 中的 actionPerformed(java.awt.event.ActionEvent) 無(wú)法實(shí)現(xiàn) java.awt.event.ActionListener 中的 actionPerformed(java.awt.event.ActionEvent);被覆蓋的方法不拋出 NumException

解析:

這段代碼有問(wèn)題:

實(shí)現(xiàn)接口

public void actionPerformed(ActionEvent e) throws NumException{聲明異常

public void actionPerformed(ActionEvent e)不應(yīng)該拋出異常, ActionListener接口函數(shù)沒(méi)有異常拋出

一種可能的解決方法是把判斷移到另外一個(gè)函數(shù)中,然后拋出異常,在actionPerformed中捕獲或者在外面捕獲

JAVA如何拋出異常?

如果你知道你寫(xiě)的某個(gè)函數(shù)有可能拋出異常,而你又不想在這個(gè)函數(shù)中對(duì)異常進(jìn)行處理,只是想把它拋出去讓調(diào)用這個(gè)函數(shù)的上級(jí)調(diào)用函數(shù)進(jìn)行處理,那么有兩種方式可供選擇:\x0d\x0a\x0d\x0a第一種方式:直接在函數(shù)頭中throws SomeException,函數(shù)體中不需要try/catch。比如將最開(kāi)始的例子中的testEx2改為下面的方式,那么testEx1就能捕捉到testEx2拋出的異常了。\x0d\x0a boolean testEx2() throws Exception{\x0d\x0a boolean ret = true;\x0d\x0a int b=12;\x0d\x0a int c;\x0d\x0a for (int i=2;i=-2;i--){\x0d\x0a c=b/i;\x0d\x0a System.out.println("i="+i);\x0d\x0a }\x0d\x0a return true; \x0d\x0a}\x0d\x0a第二種方式:使用try/catch,在catch中進(jìn)行一定的處理之后(如果有必要的話(huà))拋出某種異常。例如上面的testEx2改為下面的方式,testEx1也能捕獲到它拋出的異常:\x0d\x0a boolean testEx2() throws Exception{\x0d\x0a boolean ret = true;\x0d\x0a try{\x0d\x0a int b=12;\x0d\x0a int c;\x0d\x0a for (int i=2;i=-2;i--){\x0d\x0a c=b/i;\x0d\x0a System.out.println("i="+i);\x0d\x0a }\x0d\x0a return true;\x0d\x0a }catch (Exception e){\x0d\x0a System.out.println("testEx2, catch exception");\x0d\x0a Throw e;\x0d\x0a }\x0d\x0a }\x0d\x0a第三種方法:使用try/catch/finally,在catch中進(jìn)行一定的處理之后(如果有必要的話(huà))拋出某種異常。例如上面的testEx2改為下面的方式,testEx1也能捕獲到它拋出的異常:\x0d\x0a boolean testEx2() throws Exception{\x0d\x0a boolean ret = true;\x0d\x0a try{\x0d\x0a int b=12;\x0d\x0a int c;\x0d\x0a for (int i=2;i=-2;i--){\x0d\x0a c=b/i;\x0d\x0a System.out.println("i="+i);\x0d\x0a throw new Exception("aaa");\x0d\x0a }\x0d\x0a return true;\x0d\x0a }catch (java.lang.ArithmeticException e){\x0d\x0a System.out.println("testEx2, catch exception");\x0d\x0a ret = false;\x0d\x0a throw new Exception("aaa");\x0d\x0a }finally{\x0d\x0a System.out.println("testEx2, finally; return value="+ret);\x0d\x0a }\x0d\x0a\x0d\x0a}


網(wǎng)站標(biāo)題:java代碼拋出異常 java異常的拋出捕獲并處理
瀏覽地址:http://weahome.cn/article/ddjjioj.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部