精华内容
下载资源
问答
  • 都是Throwable的子类:1.Exception(异常):是程序本身可以处理的异常。 2.Error(错误):是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,一般不需要程序处理。 3....

     

    都是Throwable的子类: 
    1.Exception(异常) :是程序本身可以处理的异常。 

    2.Error(错误): 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,一般不需要程序处理。

    3.检查异常(编译器要求必须处置的异常) :  除了Error,RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。

    4.非检查异常(编译器不要求处置的异常): 包括运行时异常(RuntimeException与其子类)和错误(Error)。

    转载于:https://www.cnblogs.com/sunyubin/p/9751123.html

    展开全文
  • 关于下面代码片段叙述正确的是? byte b1=1,b2=2,b3,b6; final byte b4=4,b5=6; b6=b4+b5; b3=(b1+b2); System.out.println(b3+b6); A.输出结果:13 B.语句:b6=b4+b5编译出错 C.语句:b3=b1+b2编译出错...

    关于下面代码片段叙述正确的是?

    byte b1=1,b2=2,b3,b6; 
    final byte b4=4,b5=6; 
    b6=b4+b5; 
    b3=(b1+b2); 
    System.out.println(b3+b6);
    A.输出结果:13
    B.语句:b6=b4+b5编译出错
    C.语句:b3=b1+b2编译出错
    D.运行期抛出异常

    本题选C。

    被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了

    而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。

    Java中的byte,short,char进行计算时都会提升为int类型。

    展开全文
  • 首先说结论,使用@ControllerAdvice配合@ExceptionHandler处理全局controller的异常时,如果想要正确匹配自己的自定义异常,需要在controller的方法上抛出相应的自定义异常,或者自定义异常继承RuntimeException类。...

    首先说结论,使用@ControllerAdvice配合@ExceptionHandler处理全局controller的异常时,如果想要正确匹配自己的自定义异常,需要在controller的方法上抛出相应的自定义异常,或者自定义异常继承RuntimeException类。

    问题描述:
    1、在使用@ControllerAdvice配合@ExceptionHandler处理全局异常时,自定义了一个AppException(extends Exception),由于有些全局的参数需要统一验证,所以在所有controller的方法上加一层AOP校验,如果参数校验没通过也抛出AppException
    2、在@ControllerAdvice标记的类上,主要有两个@ExceptionHandler,分别匹配AppException.class和Throwable.class。
    3、在测试时,由于全局AOP的参数校验没通过,抛出了AppException,但是发现这个AppException被Throwable.class匹配到了,而不是我们想要的AppException.class匹配上。

    分析过程:

    一阶段

    开始由于一直测试的两个不同的请求(一个通过swagger,一个通过游览器地址输入,两个请求比较相似,我以为是同一个请求),一个方法上抛出了AppException,一个没有,然后发现这个问题时现时不现,因为无法稳定复现问题,我猜测可能是AppException出了问题,所以我修改了AppException,将其父类改为了RuntimeException,然后发现问题解决了

    二阶段

    问题解决后,我又思考了下为啥会出现这种情况,根据java的异常体系来说,无论是继承Exception还是RuntimeException,都不应该会匹配到Throwable.class上去。我再次跟踪了异常的执行过程,粗略的过了一遍,发现在下面这个位置出现了差别:

    catch (InvocationTargetException ex) {
                // Unwrap for HandlerExceptionResolvers ...
                Throwable targetException = ex.getTargetException();
                if (targetException instanceof RuntimeException) {
                    throw (RuntimeException) targetException;
                }
                else if (targetException instanceof Error) {
                    throw (Error) targetException;
                }
                else if (targetException instanceof Exception) {
                    throw (Exception) targetException;
                }
                else {
                    String text = getInvocationErrorMessage("Failed to invoke handler method", args);
                    throw new IllegalStateException(text, targetException);
                }
            }

    成功的走的是Exception,失败的走的是RuntimeException。
    这时候到了@ControllerAdvice标记的类时就会出问题了,因为继承AppException是和RuntimeException是平级,所以如果走runtimeException这个判断条件抛出去的异常注定就不会被AppException匹配上。

    这时候再仔细对比下异常类型,可以发现正确的那个异常类型时AppException,而错误的那个异常类型时java.lang.reflect.UndeclaredThrowableException,内部包着AppException。

    JDK的java doc是这么解释UndeclaredThrowableException的:如果代理实例的调用处理程序的 invoke 方法抛出一个经过检查的异常(不可分配给 RuntimeException 或 Error 的 Throwable),且该异常不可分配给该方法的throws子局声明的任何异常类,则由代理实例上的方法调用抛出此异常。

    因为AppException继承于Exception,所以代理抛出的异常就是包着AppException的UndeclaredThrowableException,在@ControllerAdvice匹配的时候自然就匹配不上了。
    而当AppException继承于RuntimeException时,抛出的异常依旧是AppException,所以能够被匹配上。

    结论

    所以解决方法有两种:AppException继承RuntimeException或者Controller的方法抛出AppException异常。

    展开全文
  • D"捕获到的异常只能在当前方法中处理,不能在其他方法中处理"这句话是错的,在实际应用中,当一个异常出现时,单靠某个方法无法完全处理该异常,必须由几个方法协作才可以处理,这个时候同时使用catch和throw语句,...

     

    D"捕获到的异常只能在当前方法中处理,不能在其他方法中处理"这句话是错的,在实际应用中,当一个异常出现时,单靠某个方法无法完全处理该异常,必须由几个方法协作才可以处理,这个时候同时使用catch和throw语句,捕获异常后,只对异常进行部分处理,还有些处理需要在该方法的调用者中才能完成,所以应该再次抛出异常,让该方法的调用者也能捕获到异常。(引用自《Java疯狂讲义》)

    转载于:https://www.cnblogs.com/sunyubin/p/9763101.html

    展开全文
  • Java异常控制机制又被称为“违例控制机制”。 捕获程序错误最理想的时机是在编译阶段,这样可以彻底避免错误的代码运行。但并非所有的错误都能在编译期间侦测到,有些问题必须在运行期间解决。 错误在运行期间发生时...
  • 在阅读本文的内容之前,请从下面这段代码中找出异常处理有哪些不正确的地方。如果不能找出至少两处错误,说明你还是一个“菜鸟”,对JAVA的异常处理机制还不够了解,需要仔细阅读本文的内容,并走查一下自己编写的...
  • Python的异常处理以及正确捕获 首先,我们需要搞明白一件事,程序是人编写的,既然是人所编写,自然有概率出现问题,出现问题的原因多种多样,有可能环境不正确,变量引用时不符合程序的规定类型,文件读取是编码...
  • Sentry - 处理异常日志的正确姿势

    千次阅读 2019-09-12 10:13:15
    关于日志管理 应用越做越复杂,输出日志五花八门,有print的,有写stdout的,有写stderr的, 有写logging的,也有自定义xxx.log的。那么这将导致平台应用日志分布在各个地方,无法统一管理。而且可能用的还不止一种...
  • public class TTTTT extends SuperC{ ...子类抛出异常小于等于父类方法抛出异常, 子类访问权限大于等于父类方法访问权限。   转载于:https://www.cnblogs.com/sunyubin/p/9751442.html
  • 【单选题】以下关于Python的说法中正确的是哪一项?【判断题】Python语言是一种面向对象的高级程序设计语言。【简答题】分组名单和每组招标文件以附件形式上传【其它】作业1:数据库连接 连接属性 显示“产品”表的...
  • 关于异常抛出机制

    千次阅读 2015-04-10 09:57:28
    ****************try catch使用************...//1:抛出异常的代码 //2:代码 }catch(){ //3:代码 //4:抛出异常 }finally{ //5:代码 } //6:代码 首先要明确的一点是:不管try是否
  • 题目:编译并运行一下程序,以下描述哪个选项是正确的() class A{ protected boolean equals(){ return super.equals(); } } A、编译通过,运行无异常 B、编译通过但运行时出错 C、行2 出错,不能成功编译 D、...
  • 下面关于synflood攻击的说法, 错误的是() A. 服务端由于连接队列被占满而不能对外服务 B. 不但能攻击TCP服务, 还可以攻击UDP服务 C. 大量连接处于SYN_RECV状态 D. 使用硬件防火墙可以一定程度上抵御攻击 正确答案:...
  • 【0】README0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java异常——异常分类+声明已检查异常+如何抛出异常+自定义异常类 的相关知识; 0.2)异常处理的任务: 就是将控制权从错误产生的地方转移...
  • 异常检测

    万次阅读 2018-12-04 20:00:04
    异常点检测,有时也叫离群点检测,英文一般叫做Novelty Detection或者Outlier Detection,这里就对异常点检测算法做一个总结。 1. 异常点检测算法使用场景  什么时候我们需要异常点检测算法呢?常见的有三种情况...
  • 异常

    千次阅读 2007-09-19 14:58:00
    标准异常的层次结构 Java标准异常的层次结构代表的分类绝对是一个败笔。因为所有的异常对象都是在运行时抛出的,没听说过有什么编译期异常。因此RuntimeException类代表的实际上是逻辑错误导致的异常,即标准c++中...
  • 下面有关final,finally,finalize的区别描述错误的是() A、如果一个类被声明为final,意味着它不能在派生出新的子类,不能作为父类被继承 B、如果一个方法被声明为final,可以被覆盖 C、finally在异常处理时提供...
  • 透彻理解异常并合理使用异常

    千次阅读 2013-05-13 11:17:14
    对于异常(Exception)的基本使用相信大家已经比较了解了。不了解的童鞋请参见博文:Java异常处理机制 其实比较棘手的问题是什么场合用什么异常?checked异常还是runtime异常?是抛出异常还是捕获异常下面举例来...
  • 下面有关java final的基本规则,描述错误的是? Afinal修饰的类不能被继承 Bfinal修饰的成员变量只允许赋值一次,且只能在类方法赋值 Cfinal修饰的局部变量即为常量,只能赋值一次。 Dfinal修饰的方法不允许被子类...
  • Java异常处理习题

    万次阅读 2017-10-05 17:45:16
    2、关于异常,下列说法正确的是( ) A. 异常是一种对象 B.一旦程序运行,异常将被创建 C.为了保证程序运行速度,要尽量避免异常控制 D.以上说法都不对   3、()类是所有异常类的父类。 A.Th
  • java(3)-深入理解java异常处理机制

    万次阅读 多人点赞 2011-01-20 18:44:00
    1. 引子 try…catch…finally恐怕是大家再...那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。 pa
  • 以下选项的叙述中,正确的是循环队列有队头和队尾两个指针,因此,循环队列是非线性结构在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况在循环队列中,只需要队尾指针就能反映队列中元素的动态变化...
  • Java中异常的限制

    千次阅读 2016-09-19 22:09:40
    这就需要错误源能通过某种方式,把适当的信息传递给某个接收者——该接收者将知道如何正确处理这个问题。异常处理是Java中唯一正式的错误报告机制,并且通过编译器强制执行。本文略过了异常处理流程等基本知识,直接...
  • java异常解析以及自定义异常实例

    千次阅读 2017-10-14 11:16:09
    JAVA异常是在java程序运行的时候遇到非正常的情况而创建的对象,它封装了异常信息,java异常的根类为java.lang.Throwable,整个类有两个直接子类java.lang.Error和java.lang.Exception.Error是程序本身无法恢复的严重...
  • 目录一、 异常的背景异常体系:**防御式编程:**异常的好处二、异常的基本用法**基本语法****关于异常的处理方式**抛出异常 一、 异常的背景 初识异常 我们曾经的代码中已经接触了一些 “异常” 了. 例如 除以 0 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 163,315
精华内容 65,326
关键字:

下面关于异常的描述正确的是