2 gaoyanfan GAOYANFAN 于 2017.01.02 00:28 提问

why only catch the first Exception of f(0)

// exceptions/Ex9.java
// TIJ4 Chapter Exceptions, Exercise 9, page 460
/* Create three new types of exceptions. Write a class with a method that

  • throws all three. In main(), call the method but only use a single catch
  • clause that will catch all three types of exceptions. / //import static net.mindview.util.Print.;

class ExceptionA extends Exception {
ExceptionA(String msg) { super(msg); }

}

class ExceptionB extends Exception {
ExceptionB(String msg) { super(msg); }

}

class ExceptionC extends Exception {
ExceptionC(String msg) { super(msg); }

}

public class Ex9 {
public static void f(int x) throws ExceptionA, ExceptionB, ExceptionC {
if(x < 0) throw new ExceptionA("x < 0");
if(x == 0) throw new ExceptionB("x == 0");
if(x > 0) throw new ExceptionC("x > 0");
}
public static void main(String[] args) {
try {
f(0);
f(1);
f(-1);
// will catch any Exception type:
} catch(Exception e) {
System.out.println("Caught Exception");
e.printStackTrace(System.out);
}
}

}

1个回答

GAOYANFAN
GAOYANFAN   2017.01.02 00:30
已采纳

i think of it.doing like this

try {
        f(0);
    } catch (ExceptionA | ExceptionB | ExceptionC e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        f(1);
    } catch (ExceptionA | ExceptionB | ExceptionC e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        f(-1);
    } catch (ExceptionA | ExceptionB | ExceptionC e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
caozhy
caozhy 请管理员注意封杀这个自问自答刷分的
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
oracle XE精简版不支持FETCH FIRST 5 ROWS ONLY语句
今天发现一个奇怪的问题,就是使用FETCH FIRST 5 ROWS ONLY语句,oracle一直提示语句错误。 纠结了半天。 本机器安装的是oracle XE精简版,服务器安装的是oracle11g。在服务器上面执行是正常的。 所以可以判断精简版不支持该语句。
VC Debug中遇到first chance exception问题
查阅了下资料,发现与虚拟内存分配有关.first-chance 基本上是这样的1。通过virtualalloc分配(堆增长也需要virtualalloc)的内存并非立即有效,仅仅是在页表项标注了一下。2。不立即分配的原因是每个进程都有一个工作集,大约为120k,3。当进程首次访问该内存地址,产生一个first-chance access violation,线程挂起,转到ring 0,系统发现内存
C++ 异常处理(excepiton)
错误处理我们的程序有时会遇到运行问题,我们必需保护程序能够正常运行。一个程序可能需要更多的内存或是打开一个不存在的文件或是遇到一个不能处理的错误。通常有下面三种方式来进行错误处理:1. 终止程序.2. 返回一个错误码3. 抛出一个异常我们应该避免第一种方式虽然有很多调用 abort()或exit()操作的例子。在2与3之间我们不需要有太多争议哪种方式更好点。我让我通过简单的代码来进行比较:下面是通
Unreachable catch block for UserExistException. This exception is never thrown from the try statemen
出现这种情况是对应的try中调用的方法在原来的类中没有抛异常导致的,在原类中抛出异常即可,注意try中有多个可以抛异常的只要其中一个用throws抛出异常该提示会消失。...
exception(异常处理)与try,catch,
转载:http://www.cnblogs.com/ggjucheng/archive/2011/12/18/2292089.html 引言 异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题。而传统错误处理技术,检查到一个局部无法处理的问题时: 1.终止程序(例如atol,atoi,输入NULL,会产生段错误,导致程序
Unreachable catch block for SQLException. This exception is never thrown from the try statement body
public boolean deleteAllByUid() { try { List list = findAllByUid(); if (list != null) { for (MyCircleBean item : list) { delete(item); } } return true; } catch (SQLExcepti
Qt error:: write access violation at: 0x1, flags=0x0 (first chance)
错误描述:         error: Exception at 0x7ff74c0565ba, code: 0xc0000005: write access violation at: 0x1, flags=0x0 (first chance)   功能描述:       设计了一个三维重建类。该类有一个进度对话框提示重建过程。当单击对话框的Cancel按钮,会将成员变量stop
关于try{} catch(exception e )
由一句话带来的三种思考,起初看异常处理看得云里雾里,对于try catch()  更是不知所谓,最近看多线程以及到论坛查找,就这句话有了一些最基本的理解。     在java中,异常存在三种形式: 1、error,主要有jvm形成,不易捕获; 2、runtime exception,运行异常与环境有关,编译时无法检查,而且发生的情况复杂,JVM自动处理,无需人工捕获; 3、exce
Unreachable catch block for IOException. This exception is never thrown from the try statement body
Unreachable catch block for IOException. This exception is never thrown from the try statement body不可到达的 catch 块异常。try 中的语句,永远不会引发此异常2 quick fixes available2 快速修复可用点击其中一个,可以解决这个问题。
12c的FETCH FIRST ROWS特性可以简化老版本中ROW_NUM()或ROWNUM的分页排序写法
转载自:http://www.askmaclean.com/archives/12c-fetch-first-rowsoffset-rows-fetch-next-row-limit-clause.html Database 12c的FETCH FIRST ROWS特性可以简化老版本中ROW_NUM()或ROWNUM的分页排序写法, 大幅节约开发花在分页查询语句上的时间。