java编程用catch(Exception e)捕获异常,在catch中用instanceof对不同的异常分别处理
4个回答
展开全部
实现原理:实际上就是先不分具体的异常,直接捕获所有异常的父类Exception,之后在进行实例化异常判断,进行结果输出。举例:
try{
//填写需要捕获异常信息的代码
} catch(Exception e) {//捕获异常信息
if(e instanceof NumberFormatException) {//判断是不是数据转换异常
System.out.println("NumberFormatException");//输出结果
}
if(e instanceof NullPointerException) {//判断是不是空指针异常
System.out.println("NullPointerException");//输出结果
}
}
备注:这个instanceof 实例化可以有效的判断类型是否匹配,而不抛出异常,增加了代码的可复写性(也就是根据异常自定义输出信息)。
try{
//填写需要捕获异常信息的代码
} catch(Exception e) {//捕获异常信息
if(e instanceof NumberFormatException) {//判断是不是数据转换异常
System.out.println("NumberFormatException");//输出结果
}
if(e instanceof NullPointerException) {//判断是不是空指针异常
System.out.println("NullPointerException");//输出结果
}
}
备注:这个instanceof 实例化可以有效的判断类型是否匹配,而不抛出异常,增加了代码的可复写性(也就是根据异常自定义输出信息)。
展开全部
throw出去的异常,由调用方处理,也就是更外面的catch处理
如果都没有代码处理,则整个程序异常,并运行结束
如果都没有代码处理,则整个程序异常,并运行结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不需要把,多几个catch就行了
try{
//TODO 可能抛异常的代码
} catch(NumberFormateException nfe) {
//TODO 处理异常
} catch(Exception e) {
//TODO 处理异常
}
try{
//TODO 可能抛异常的代码
} catch(NumberFormateException nfe) {
//TODO 处理异常
} catch(Exception e) {
//TODO 处理异常
}
追问
如果用instanceof怎么实现呢??
追答
为什么非要instanceof呢,这不是多此一举吗?
public static void main(String[] args) {
try {
a();
b();
} catch(Exception e) {
if(e instanceof NullPointerException) {
System.out.println("NullPointerException");
}
if(e instanceof NumberFormatException) {
System.out.println("NumberFormatException");
}
}
}
public static void a() throws NullPointerException {
int i = 1;
if(i == 1) {
throw new NullPointerException();
}
}
public static void b() throws NumberFormatException {
int i = 1;
if(i == 1) {
throw new NumberFormatException();
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
以下两种异常处理的方式都是可以的。 第一种要求首先判断子类型的异常。
在第一种中NumberFormateException 是Exception的子类。
个人认为第一种异常处理的方式是比较好的。 也是比较常见的。
不过也有人用第二种的方式, 我一同事就特喜欢第二种的方式。
看个人理解了。 呵呵。 应该差不多, 没什么大的区别。
try{
//TODO 可能抛异常的代码
} catch(NumberFormateException nfe) {
//TODO 处理异常
} catch(Exception e) {
//TODO 处理异常
}
和
catch(Exception e) {
if(e instanceof NullPointerException) {
System.out.println("NullPointerException");
}
if(e instanceof NumberFormatException) {
System.out.println("NumberFormatException");
}
}
在第一种中NumberFormateException 是Exception的子类。
个人认为第一种异常处理的方式是比较好的。 也是比较常见的。
不过也有人用第二种的方式, 我一同事就特喜欢第二种的方式。
看个人理解了。 呵呵。 应该差不多, 没什么大的区别。
try{
//TODO 可能抛异常的代码
} catch(NumberFormateException nfe) {
//TODO 处理异常
} catch(Exception e) {
//TODO 处理异常
}
和
catch(Exception e) {
if(e instanceof NullPointerException) {
System.out.println("NullPointerException");
}
if(e instanceof NumberFormatException) {
System.out.println("NumberFormatException");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询