重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
//BlockedException异常类,同NegativeAmountException类似。
目前创新互联建站已为1000+的企业提供了网站建设、域名、雅安服务器托管、网站托管运营、企业网站设计、西夏网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
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; }
//取款方法,取款数额amount; 如果取款数目小于0抛出异常
public void withdraw(double amount) throws NegativeAmountException, BlockedException{
if("blocked".equals(status)){
throw new BlockException("账户冻结,不能取款!");
}
...... // 取款方法后面部分与原来相同.
}
.....
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*编写一个自定义的异常类,包含一个product( )方法(用于两个数相乘),
如果product( )方法中的两个参数的乘积小于0,则抛出一个自定义异常类的对象
,输出错误信息和乘积的值。另外要求product( )方法要
用throws关键字声明该方法要抛出自定义异常和算术异常。
*/
public class ExceptionDemo {
public static void main(String[] args) throws MyselfException ,IOException{
System.out.println("请输入第一个数");
String str1=(new BufferedReader(new InputStreamReader(System.in))).readLine();
System.out.println("请输入第2个数");
String str2=(new BufferedReader(new InputStreamReader(System.in))).readLine();
System.out.println("你输入了"+Double.parseDouble(str1)+Double.parseDouble(str2)+"这两个数");
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))// 异常抛出
/*
* 方法中的两个参数的乘积小于0,则抛出一个自定义异常类的对象
* ,输出错误信息和乘积的值,,,,,,,则必须有一个人乘数为负,且两个都不为0才会出负值
*/
{
System.out.println("乘级=" + x * y);
throw new MyselfException("出现两个参数的乘积小于0的异常");
}// 输出错误信息
else
System.out.println("没有异常");
System.out.println("乘级=" + 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");这一行代码根本就不会执行,因为if条件一进来之后直接抛异常就跳出这个方法了
}
public static void main(String[] args) {
try {
test();
} catch(Exception ex) {你这里捕获的是Exception,但是你抛出的是Error,去搜一下Error和Exception的区别,
System.out.print("exception");因为你抛出的和捕获的类型不一样,所以这里不会执行,你这里捕获一下Error或者在上面抛出Exception,就是c了
}
System.out.print("elld ");
}
java中所有抛出(throw)的东西都派生自Throwable
所以就是E了,就是main方法抛出了一个Throwable