//BlockedException異常類,同NegativeAmountException類似。
目前創(chuàng)新互聯(lián)建站已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、西夏網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
class BlockedException extends Exception{
BlockedException(String s){
super(s);
}
}
public Account{
...
private String status;
public String getStatus(){ return status;}
public void setStatus(String sta){ status = sta; }
//取款方法,取款數(shù)額amount; 如果取款數(shù)目小于0拋出異常
public void withdraw(double amount) throws NegativeAmountException, BlockedException{
if("blocked".equals(status)){
throw new BlockException("賬戶凍結(jié),不能取款!");
}
...... // 取款方法后面部分與原來(lái)相同.
}
.....
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*編寫一個(gè)自定義的異常類,包含一個(gè)product( )方法(用于兩個(gè)數(shù)相乘),
如果product( )方法中的兩個(gè)參數(shù)的乘積小于0,則拋出一個(gè)自定義異常類的對(duì)象
,輸出錯(cuò)誤信息和乘積的值。另外要求product( )方法要
用throws關(guān)鍵字聲明該方法要拋出自定義異常和算術(shù)異常。
*/
public class ExceptionDemo {
public static void main(String[] args) throws MyselfException ,IOException{
System.out.println("請(qǐng)輸入第一個(gè)數(shù)");
String str1=(new BufferedReader(new InputStreamReader(System.in))).readLine();
System.out.println("請(qǐng)輸入第2個(gè)數(shù)");
String str2=(new BufferedReader(new InputStreamReader(System.in))).readLine();
System.out.println("你輸入了"+Double.parseDouble(str1)+Double.parseDouble(str2)+"這兩個(gè)數(shù)");
product(Double.parseDouble(str1),Double.parseDouble(str2));
}
public static double product(double x, double y) throws MyselfException {// 異常聲明
if ((x 0 y 0) || (x 0 y 0))// 異常拋出
/*
* 方法中的兩個(gè)參數(shù)的乘積小于0,則拋出一個(gè)自定義異常類的對(duì)象
* ,輸出錯(cuò)誤信息和乘積的值,,,,,,,則必須有一個(gè)人乘數(shù)為負(fù),且兩個(gè)都不為0才會(huì)出負(fù)值
*/
{
System.out.println("乘級(jí)=" + x * y);
throw new MyselfException("出現(xiàn)兩個(gè)參數(shù)的乘積小于0的異常");
}// 輸出錯(cuò)誤信息
else
System.out.println("沒(méi)有異常");
System.out.println("乘級(jí)=" + x * y); // 乘積的值
return x * y;
}
}
class MyselfException extends Exception {
public MyselfException() {
}
public MyselfException(String message, Throwable cause) {
super(message, cause);
}
public MyselfException(String message) {
super(message);
}
public MyselfException(Throwable cause) {
super(cause);
}
}
static void test() throws Error {注意你這里拋出的是Error
if(true)
throw new AssertionError();
System.out.print("test");這一行代碼根本就不會(huì)執(zhí)行,因?yàn)閕f條件一進(jìn)來(lái)之后直接拋異常就跳出這個(gè)方法了
}
public static void main(String[] args) {
try {
test();
} catch(Exception ex) {你這里捕獲的是Exception,但是你拋出的是Error,去搜一下Error和Exception的區(qū)別,
System.out.print("exception");因?yàn)槟銙伋龅暮筒东@的類型不一樣,所以這里不會(huì)執(zhí)行,你這里捕獲一下Error或者在上面拋出Exception,就是c了
}
System.out.print("elld ");
}
java中所有拋出(throw)的東西都派生自Throwable
所以就是E了,就是main方法拋出了一個(gè)Throwable