java构造函数捕获异常_java – 在构造函数中捕获异常

你的设计问题是,caling throw异常离开了块的范围,并且正在寻找可以处理异常的try-catch块.在你的情况下

void foo() {

if (somethingbad()) {

throw new exception();

bar(); //

}

}

如果在构造函数中抛出异常并且异常离开了函数,因为构造函数中没有针对该异常的try-catch,该对象的构造将失败.因此,如果您的动物园禁止将狼作为动物,您应该抛出异常(因此动物园永远不会被创造).

public Zoo (String animal, String food) throws AnimalException {

this.animal = animal;

if (findWord(animal, "wolf")) {

throw new AnimalException("This animal is a predator.");

}

else {

this.food = food;

}

}

void foo() {

Zoo myZoo;

try {

myZoo = new Zoo("wolf", "meat");

} catch (AnimalException ex) {

System.out.println(ex.toString())

}

// myZoo is still null, uninitialized.

}

但是,如果您想在Zoo中拥有捕食者,但向所有访问者发出警告,则应该只显示一些警告.

public Zoo (String animal, String food) throws AnimalException {

this.animal = animal;

this.food = food;

if (findWord(animal, "wolf")) {

System.out.println("Beware, we have a predator in zoo");

}

}

另外,您知道吗,您的动物园可能只包含一种动物和一种食物吗?

还有一件事.你的方法findWord(String,String)太复杂了. Java包含许多有用的类和函数,因此我们不会一次又一次地拖延自己编写代码.寻找一个单词的子串是非常有用和最喜欢的功能.看看indexOf(String).它完全是为您的purpouse设计的,可能也是类似的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值