首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 捕获和抛出异常

参考链接: Java捕获多个异常 Java中把非正常情况分为两种:异常(Exception)和错误(Error),其中Error错误一般是指与虚拟机相关的问题,这种错误无法恢复或不可能捕获,而对于Exception...Java7后支持用catch捕获多个异常,也可捕获自定义异常。对于捕获的异常一般可以使用printStackTrace()方法追踪输出至标准错误流。...代码示例如下   除捕获异常以外可以使用throws将异常进行抛出,抛出的异常由上级调用者处理,上级调用者可以进行处理或抛出异常,上级调用者可以抛出更广泛的异常。...JVM将打印异常的跟踪栈信息,并中止程序运行,示例如下  除了使用throws抛出异常外也可以使用throw自行抛出异常。...throw语句可以单独使用, throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例。

1.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java 如何抛出异常、自定义异常

    2、throw : 将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可以是异常对象。...注意 : 调用可能会抛出异常的方法,必须添加try-catch代码块尝试去捕获异常 或者 添加throws 声明 来将异常 抛出给更上一层的调用者进行处理,这里需要注意一个细节:新的异常包含原始异常的所有信息...二、自定义异常 前面所讲的异常,都是系统自带的,系统自己处理,但是很多时候项目会出现特有问题,而这些问题并未被java所描述并封装成对象,所以对于这些特有的问题可以按照java的对问题封装的思想,将特有的问题进行自定义异常封装...在Java中要想创建自定义异常,需要继承Throwable或者他的子类Exception。...包装成 RuntimeException 异常继续抛出,但是test2()方法却没有声明 抛出异常 ?

    4.8K30

    Java 如何抛出异常、自定义异常

    2、throw : 将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可以是异常对象。...注意 : 调用可能会抛出异常的方法,必须添加try-catch代码块尝试去捕获异常 或者 添加throws 声明 来将异常 抛出给更上一层的调用者进行处理,这里需要注意一个细节:新的异常包含原始异常的所有信息...二、自定义异常 前面所讲的异常,都是系统自带的,系统自己处理,但是很多时候项目会出现特有问题,而这些问题并未被java所描述并封装成对象,所以对于这些特有的问题可以按照java的对问题封装的思想,将特有的问题进行自定义异常封装...在Java中要想创建自定义异常,需要继承Throwable或者他的子类Exception。...包装成 RuntimeException 异常继续抛出,但是test2()方法却没有声明 抛出异常 ?

    4K10

    Java-抛出异常、自定义异常类

    但这种错误一般是偶然的,可能是用户输入不呵呵程序编写者的意图导致,而不是程序本身问题,这是我们要做的,是让操作者知道发生了什么事情,而不是直截了当的结束程序,这时我们就用到了异常处理(语句发生错误时,只抛出异常...(Exception e) { // TODO: handle exception e.printStackTrace(); } System.out.println("但是上面抛出异常后...但是在写完throw/throws 语句后,异常处理并没有结束,因为这里只是简单声明了,我的这个成员方法中的可能会抛出异常,并没有写具体该如何处理这个异常,所以这是在主函数中,就要用try()catch...(2)、重写toString()函数,这是最重要的一点,再toString函数中,描述具体发生了什么错误导致了异常的抛出。...+1可见 该测试一定越界 textArray[j] = 5 ;//给数组原属赋值 } } } 如上图所示,如果发生了异常,这才catch()语句中声称自定义的异常对象,并输出具体信息: java

    1.4K20

    四问四答Java异常抛出和处理

    基本概念 先来张经典异常族谱图: Throwable:当对象为此类或其子类时,才能通过Java的throw语句抛出。 Error:系统错误,由JVM处理,开发者无需处理。...在Exceptions in Java中举了一个例子:多线程执行时,一个线程遇到ConcurrentModificationException异常没有及时抛出,为定位和解决问题带来巨大代价。...10 Best Practices to Handle Java Exceptions中有一条原则:只在可以处理的时候捕获并处理,不能处理的异常就抛出去。...小结 在业务程序中抛出自定义异常时,我曾经想过只定义一个xxExcpetion,然后用错误码来代表不同的异常类型。听起来有点像Java和C++的城中结合风。...小彩蛋:你知道Java中的常见异常都是什么意思吗?点开这里来看看吧

    53610

    在Java8的Consumer中抛出异常

    最近在实现公司内部一个通用svn数据工具类,其中有段代码是拿到当前更新后的数据进行下一步操作,用的是java8的Consumer实现的,代码如下: public void save(final DTO...Exception 这段代码一开始并没有什么问题,但是投入生产后发现有些异常数据导致服务器报错了,但是前台还是返回操作成功,debug查看后发现是异常被调用方吃掉了,原因了原生Consumer不支持异常抛出...,只能内部处理,接到反馈后,自己测试确实能复现,查看Consumer源码发现原生确实不支持抛出,查阅网络资料,发现只能重写一个Consumer方法,特此记录一下 @FunctionalInterface...; /** * @ClassName: ThrowingConsumer * @Description: 重写Java8的Consumer中的异常抛出 * @author:Erwin.Zhang...* * http://www.baeldung.com/java-sneaky-throws */ @SuppressWarnings("unchecked")

    3.9K20

    java陷阱之:HashMap for each遍历同时删除,抛出ConcurrentModificationException

    ---- 现象 ---- 当HashMap使用for each遍历entrySet的同时,使用HashMap的remove操作元素时,并不是在并发的情况下,也会抛出异常:ConcurrentModificationException...at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1597) at java.base/java.util.HashMap...$EntryIterator.next(HashMap.java:1630) at java.base/java.util.HashMap$EntryIterator.next(HashMap.java...,而删除元素使用的java.util.HashMap#remove(java.lang.Object)方法是HashMap的,并不是迭代器的方法。...= expectedModCount)条件不成立,抛出异常。 其实质是迭代器设计模式:单线程环境下,如果使用迭代器遍历容器中的元素,必须使用迭代器删除容器中的元素。

    50720

    java中抛出throw关键字是怎么用的? 举例?

    5.抛出throw关键字    马克-to-win:我们先说5/0的原理,当程序运行到5/0的时候,java系统JVM会在后台new出一个除0异常实例,之后把这个实例传入catch块儿供开发者使用。...: / by zero     at Test.main(Test.java:5) 马 克-to-win:通过观察,我们发现上面两个例子最后报的异常的地方是一样的!...马克-to-win:如上面我们的讲的,只不过一 个是JVM系统抛出的,一个是我们自己主动抛出的。马克-to-win:所以为了不让系统崩溃,我们需要像原来一样捕获一下异常就可以了。...: divide by 0 马克-to-win:优雅结束   请大家参见下面sun公司的java.sql.DriverManager.getConnection的源代码。...connection = null;         java.sql.Statement statement = null;         java.sql.ResultSet resultSet

    74030

    List中subList方法抛出异常java.util.ConcurrentModificationException原理分析

    首先初始化一个6000个元素的list,然后,利用list.subList()截取3000个元素到list1中,再取出后3000个元素到list2中,然后清空list2,最后再打印list1,此时将抛出异常...: 2、前戏知识: subList()方法原理分析: 上面的测试方式为什么会出现这个情况,看上去明明没有任何问题,但是打印list1的时候就抛出异常,肯定不可能是System.out.println(...3、高潮部分: 异常产生分析: 有了上面第二步的分析,有了一个基本认识,那就是list.subList()方法返回的集合会直接影响原始的list集合,接下来继续分析java.util.ConcurrentModificationException...java.util.ConcurrentModificationException,写得累死我了,绕了一大圈终于写到这个异常了,在生成list1时,它在实例化一个SubList对象时将原始list的modCount...= this.modCount判断肯定时true,所以这就是异常抛出的原因。 4、附上一位研究了subList()方法上面的注释得出的结论的图供大家参考学习:

    75640
    领券