抛出多个异常

java编程思想这本书上的一道练习题,题目是:定义三种新的异常类型,写一个类,在一个方法中抛出三种异常,在main中调用这个方法,仅用一个catch捕获三个异常

public class CatchMultiException {

    public static void main(String[] args) throws Exception {

        try {

            test(2);

        catch (Exception e) {

            if (e instanceof TestAException || e instanceof TestBException

                    || e instanceof TestCException) {

                e.printStackTrace();

            else {

                throw e;

            }

        }

    }

    public static void test(int a) throws TestAException, TestBException,

            TestCException {

        if (a == 0) {

            throw new TestAException();

        }

        if (a == 1) {

            throw new TestBException();

        }

        if (a == 2) {

            throw new TestCException();

        }

    }

}

class TestAException extends Exception {

    private static final long serialVersionUID = 1L;

}

class TestBException extends Exception {

    private static final long serialVersionUID = 1L;

}

class TestCException extends Exception {

    private static final long serialVersionUID = 1L;

}

--------------

如果使用 JDK 7 的话,还可以这样:

    public static void main(String[] args) {

        try {

            test(2);

        catch (TestAException | TestBException | TestCException e) {

            e.printStackTrace();

        }

    }

转自:

http://bbs.csdn.net/topics/370216093

时间: 2024-08-24 04:27:59

抛出多个异常的相关文章

Java中抛出的各种异常

目录(?)[-] 引子 JAVA异常 处理异常机制 捕获异常trycatch 和 finally try-catch语句 trycatch-finally语句 try-catch-finally 规则异常处理语句的语法规则 trycatchfinally语句块的执行顺序 抛出异常 throws抛出异常 使用throw抛出异常 Throwable类中的常用方法 Java常见异常 runtimeException子类 IOException 其他 自定义异常 1. 引子 try…catch…fina

try ,finally都抛出异常如何处理.如果try中抛出了异常,在控制权转移到调用栈上一层代码之前, finally 语句块也会执行,如果finally抛出异常,try语句快抛出的那个异常就

package com.github.jdk7; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * try ,finally都抛出异常如何处理.如果try中抛出了异常,在控制权转移到调用栈上一层代码之前, * finally 语句块也会执行,如果finally抛出异常,try语句快抛出的那个异常就丢失了. * * @author doctor * * @since 2014年

@Required 注释应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常。

@Required 注释应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常. java public class Student { private Integer age; private String name; @Required public void setAge(Integer age) { this.age = age; } public

【ThinkingInJava】24、捕获一个异常之后抛出另外一个异常,并且希望吧原始的信息保存下来

/** * 书本:<Thinking In Java> * 功能:捕获一个异常之后抛出另外一个异常,并且希望吧原始的信息保存下来,这个被称为异常链 * 文件:DynamicFields.java * 时间:2015年4月9日16:24:44 * 作者:cutter_point */ package Lesson12_error_handling_with_exceptions; import static net.mindview.util.Print.*; class DynamicFiel

c# throw抛出上一个异常

catch(exception e) { throw; } 不仅抛出这次的异常,也抛出之前的异常. 用法示例:函数A调用函数B,A用到此throw时,B中发生的异常也会继承过来. catch(exception e) { throw e; } 当调用异常位置的时候,仅显示这个位置. 在上个用法中,B中的位置不会出现. 原文地址:https://www.cnblogs.com/gaara-zhang/p/9215031.html

C++学习40 抛出自己的异常

throw 是C++中的关键字,用来抛出异常.如果不使用 throw 关键字,try 就什么也捕获不到:上节提到的 at() 函数在内部也使用了 throw 关键字来抛出异常. throw 既可以用在标准库中,也可以用在自定义的函数中,抛出我们期望的异常.throw 关键字语法为: throw exceptionData; exceptionData 是“异常数据”的意思,它既可以是一个普通变量,也可以是一个对象,只要能在 catch 中匹配就可以. 下面的例子演示了如何使用 throw 关键字

bitmap.setPixel抛出了IllegalStateException 异常

使用BitmapFactory.decodeResource创建出的Bitmap对象是immutable的,因此在调用其.setPixel方法时会抛出IllegalStateException异常. 解决方法:创建副本 若要使topImage这个Bitmap变成mutable,可以使用下面的代码: topImage = topImage.copy(Bitmap.Config.ARGB_8888, true);

servlet 和filter 抛出404等异常

1. servlet抛出错误代码异常,如404 public void doGet(HttpServletRequest request, HttpServletResponse response) { response.sendError(HttpServletResponse.SC_NOT_FOUND); } 2. filter抛出错误代码异常 public void doFilter(ServletRequest request, ServletResponse response, Fil

Think in Java 笔记_Chapter12_1_Exception基础_异常处理3_自定义异常以及抛出多个异常的处理

自定义异常 package cn.seven.shengsiyuan.exception; public class MyException extends Exception{//非运行时异常,因为只是继承了Exception并非RuntimeException public MyException() { // TODO Auto-generated constructor stub } public MyException(String message){ super(message);/