• 关于

    异常

    的搜索结果

问题

MaxCompute用户指南:MapReduce:Java SDK:兼容版本SDK概述

行者武松 2019-12-01 22:04:31 1029 浏览量 回答数 0

回答

由于历史原因PHP很多内置函数都是没有异常,而是通过返回false/-1之类的来表达异常,导致开发者也习惯于采用返回值而非异常来区分(而且php函数的返回值和数组都是那么灵活)说完不采用异常的理由(虽然没有说全),再来说说为什么异常还是值得使用的。首先需要说明的是,仅考虑语法方面,最新版本的PHP的异常,已经和JAVA等没有区别了。更丰富的错误信息。使用false/-1之类的返回值,只能让我们知道发生了异常,但不能知道发生了什么异常。即使通过给不同的异常返回不同的状态码,依然不如异常类直观。我们可以通过异常本身的类名来判断是什么异常,通过异常类的message来保存更详细的解释说明,最重要的是,我们可以通过异常的错误栈来判断是哪个文件第几行什么函数发生了问题,谁去调用的它。保证调用者处理异常。如果你的函数返回的是普通的值,可能出于疏忽,也有可能出于版本兼容问题(调用者根据你的老版本的函数进行开发,而你在新版本的函数里有了新的错误状态码)等情况,调用者忽略了你所返回的错误,那可能造成整个程序存在一些难以发现源头的问题。而异常则保证了调用者必须去处理。使你的代码逻辑更清晰。设想如果没有finally,针对每次返回都检测异常,并且在每个异常后写一遍释放资源是多么蛋疼的事情。

落地花开啦 2019-12-02 02:43:49 0 浏览量 回答数 0

回答

"不要忽略异常!既然已捕获到异常,那catch块理应做些有用的事情——处理并修复这个错误。catch块整个为空,或者仅仅打印出错信息都是不妥的!catch块为空就是假装不知道甚至瞒天过海,这是最可怕的事情——程序出了错误,所有的人都看不到任何异常,但整个应用可能已经彻底坏了。仅在catch块里打印错误跟踪栈信息稍微好一点,但仅仅比空白多了几行异常信息。通常建议对异常采取适当措施,比如: 处理异常。对异常进行合适的修复,然后绕过异常发生的地方继续执行;或者用别的数据进行计算,以代替期望的方法返回值;或者提示用户重新操作……总之,对于Checked异常,程序应该尽量修复。 重新抛出新异常。把当前运行环境下能做的事情尽量做完,然后进行异常转译,把异常包装成当前层的异常,重新抛出给上层调用者。 在合适的层处理异常。如果当前层不清楚如何处理异常,就不要在当前层使用catch语句来捕获该异常,直接使用throws声明抛出该异常,让上层调用者来负责处理该异常。"

星尘linger 2020-04-12 10:06:35 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

问题

详细描述java是如何处理异常的?

游客bnlxddh3fwntw 2020-04-24 10:22:21 4 浏览量 回答数 1

问题

Java异常的抛出问题

蛮大人123 2019-12-01 19:57:10 911 浏览量 回答数 1

回答

Java异常有checked exception(受检异常)和unchecked exception(不受检异常), 编译器在编译时,对于受检异常必须进行try...catch或throws处理,否则无法通过编译,不受检异常没有这个约束。其实就是运行时异常和非运行时异常。

wangccsy 2019-12-02 01:49:12 0 浏览量 回答数 0

问题

项目中自定义异常用一个还是多个?

蛮大人123 2019-12-01 20:03:07 823 浏览量 回答数 1

回答

" obj.method()是怎么调用?是不是得先找到obj的内存地址,获取obj的类型(或者是其他什么能识别的东西),然后找到method的偏移地址,调用method。而当obj是null的时候,连method都找不到,怎么会去在method里抛出异常。多参考参考别人的博客吧 <a href=""https://blog.csdn.net/qq_31615049/article/details/80952216"" rel=""nofollow noreferrer"">https://blog.csdn.net/qq_3161... PS:如果用兴趣了解底层,可以尝试把java转成汇编,看看具体是如何实现的###### 你好,简单的说JVM是不处理异常的,一般是直接挂掉,所以有了异常处理机制,将异常分为Error和Exception,细分的话还有非检查异常与检查异常、运行时异常与非运行时异常,我们白话的讲解下,异常跑出是对应的线程与类型还有说明,Java应用程序异常处理机制:抛出异常、捕捉异常。有一个点:一个方法所能捕捉的异常,一定是Java代码在某处所抛出的异常。简单地说,异常总是先被抛出,后被捕捉的。(具体还有很多学问)参考:java中的异常和处理机制浅谈java异常菜鸟-java异常分析" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/03d710a589614628882aea5d59cca6cf.png)

因为相信,所以看见。 2020-05-27 10:07:31 0 浏览量 回答数 0

回答

  try:..exceptIOError:passexceptZeroDivisionError:pass... exception后面如果接具体的异常类型,则代表捕获指定异常,如果后面没有接具体的异常类型,则代表捕获所有可以捕获的异常 所以多句exceptException,那么代表是根据不同的异常,执行不同的指令 你的问题是:因为open()打开一个不存在的文件,触发了OSError异常, 而这个异常被你下面语句捕获,所以没有报错 exceptOSErrorasreason:print('文件出错了\n错误的原因是:'+str(reason)) 当你去掉这句异常捕获代码,触发的OSError异常没有被程序捕获,则报错返回

爱吃鱼的程序员 2020-06-08 17:01:31 0 浏览量 回答数 0

回答

可以参照 effective java里面的建议1.尽量用runtime异常而不用checked异常,防止污染接口2.异常是错误分支,catch返回null说明走的是正常返回,错误需要有专门的错误码返回给客户3.底层异常可以在上层封装,作为调用者不需要关心所有异常,主要关心被调用者返回的异常即可4.catch异常是处理20%的异常情况,但是并不意味着不重要,如果觉得catch里面的内容太多影响阅读,可以考虑函数抽取,保持try,catch结构里面的内容简单

yu_hc200 2019-12-02 01:55:08 0 浏览量 回答数 0

回答

" 子类的方法抛出的异常范围不能超过父类的方法抛出的异常范围,子类也可以不抛出异常;接口的实现类可以不抛异常,也可以抛出与接口不一样的异常. 但是必须是接口定义的异常或是该异常的子类; StormyInning不仅继承了Inning,也实现了Storm接口,Inning中的event()方法声明抛出的异常是BaseballException ,Storm接口中的event()方法声明抛出的异常为RainedOut,如果你只是继承了Inning,那么抛出BaseballException异常是没问题的,但是StormyInning还实现了Storm接口,那抛出BaseballException异常就不行了" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/a9a164cebd4d4596ab8ac177b8a43ea8.png)

因为相信,所以看见。 2020-05-27 10:07:41 0 浏览量 回答数 0

回答

Java异常是一个非常重要的Java基础设施,很多业务系统依赖异常来做流程控制,不管是不是理想的设计,但是很有效果,根据我的经验,为这些问题来给一些输入。1 有没有合适的封装?一般公司会结合自己业务系统的错误码结合来设计异常,每个异常的实例会包含一个错误码,错误码和异常之间可以互相转换。2 对于catch异常return null这样做有什么弊端。这种做法不好,异常不要吃掉,要不处理掉,要不抛出。3 比如io异常要怎么处理。可以优先考虑临时问题重试,或者对IO问题进行描述,影响范围等进行抛出。4 怎么同时代码简洁程度和程序的健壮度。代码其实不怕多,只要合理、清晰就可以,异常处理其实就是为了逻辑处理的代码保持简洁,试想一下没有异常的语言,如果深层次返回一个错误,需要层层退出,效果是很繁琐的。提出这个几个开放的问题,希望得到大牛的回答。工作中遇到太多异常处理不好埋坑的同事,有时都不知道是自己太强人所难还是他们水平太低。

智扬 2019-12-02 01:55:08 0 浏览量 回答数 0

问题

捕获异常后抛出另外的异常

哦哦喔 2020-04-17 17:34:20 2 浏览量 回答数 2

回答

默认情况下,所有用户定义的异常都应继承自Exception。在文档中建议这样做: 异常异常 所有内置的,非系统退出的异常都派生自此类。*所有用户定义的异常也应从此类派生。 PEP 8也建议并鼓励这样做: 从Exception而不是BaseException派生异常。从BaseException的直接继承是为异常保留的,在这些异常中捕获异常几乎总是错误的事情。 *通常,由Exception派生的异常应由常规代码处理。相反,直接从BaseException派生的异常与特殊情况相关。像正常异常一样处理它们会导致意外行为。这就是为什么惯用的“全部捕获”处理程序仅处理Exception的原因: def retry(func): while True: try: return func() except Exception as err: print(f"retrying after {type(err)}: {err}") 直接从BaseException继承的内置异常是KeyboardInterrupt,SystemExit和GeneratorExit,它们与程序,线程或生成器/协程的关闭相关。错误地处理它们会阻止正常关机。 注意,虽然默认值应该是继承自Exception,但是如果有充分的理由可以继承自BaseException。例如,asyncio.CancelledError也继承自BaseException,因为它表示asyncio线程等效项Task的关闭。 回答来源:stackoverflow

is大龙 2020-03-24 21:54:48 0 浏览量 回答数 0

回答

1、处理或者继续抛出catch块中的异常2、使用明确具体的异常类型3、不要捕获Exception类而是捕获特定的子类4、始终正确地将异常包装在自定义异常中,以便不会丢失堆栈跟踪5、永远不要在finally块中抛出任何异常6、不要使用printStackTrace()语句或类似方法7、始终在单个日志消息中包含有关异常的所有信息8、在javadoc中描述程序中的所有异常

徐雷frank 2019-12-02 01:47:12 0 浏览量 回答数 0

回答

" <img src=""/img/bVDhN3?w=568&h=47"" alt=""clipboard.png"" title=""clipboard.png"" />###### 受检的异常必须要声明抛出或者try catch。###### 这不是异常 这是编译错误###### 首先你要看看书搞懂下JAVA的异常处理机制,内容较多不在这细说。但是其中有一点是可以回答你这个问题的,就是java要求在调用含有异常抛出声明的方法时(也就是方法后面含有 throws xxxxException 的情况)必须对异常进行处理。处理方式有两种: 继续声明抛出异常,将异常处理交给下一个调用者;使用try...catch块进行异常处理; 用你的代码举个栗子: //第一种处理方式 public static void main(String[] args) throws Exception { //使用throws关键字声明抛出异常 //这种处理方式是将异常继续向上抛,大多数情况下不会在main方法中这样做 system.print.out(getDay('xxxx-xx-xx',1)); } //第二种处理方式 public static void main(String[] args) { //使用try..catch块处理异常 //这种处理方式是将异常进行人工处理 try{ system.print.out(getDay('xxxx-xx-xx',1)); }catch(Exception e){ //处理异常代码,比如进行异常信息输出或者记录日志,或者其他符合业务需求的逻辑 } }###### getDay()方法将它的异常 抛给了它的上层(调用它的地方)。在main方法中 没有对getDay()的异常进行处理,所以报错。###### 调用抛出异常的方法必须对异常进行处理或重新抛出" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/def96e23a85749dba53d5c6c71c49fcc.png)

因为相信,所以看见。 2020-05-27 10:09:02 0 浏览量 回答数 0

问题

monkeyrunner脚本运行一段时间后报异常

蛮大人123 2019-12-01 19:54:56 2499 浏览量 回答数 1

回答

1.首先要理解异常信息,也就是说这个异常是什么含义?由什么原因导致?这样才能知道下一步该如何做!2.看异常信息的时候,应该看整个异常栈,尤其是根异常(也就是@FullStackDeveloper说的caused by),你截的图只是异常栈的最顶部,意义不大,根本不知道这个异常的根是什么原因导致的。3.实在没有思路,可以将跟异常的信息复制到网上google一下,如果是通常的问题,会有很多人给你答案。4.实在不行可以在社区提问,但是,请不要以【tomcat部署项目后 启动后会出错】这种风格的文字作为标题,太不具体,将根异常作为题目也比这个题目好,比如:【tomcat启动错误:Exception.XXX.XXX.XXXX.....】,只有当一句话已经无法描述具体错误的情况下,才能使用笼统的、不具体的表述。 希望会给你一些帮助

蛮大人123 2019-12-02 01:53:17 0 浏览量 回答数 0

回答

1.首先要理解异常信息,也就是说这个异常是什么含义?由什么原因导致?这样才能知道下一步该如何做!2.看异常信息的时候,应该看整个异常栈,尤其是根异常(也就是@FullStackDeveloper说的caused by),你截的图只是异常栈的最顶部,意义不大,根本不知道这个异常的根是什么原因导致的。3.实在没有思路,可以将跟异常的信息复制到网上google一下,如果是通常的问题,会有很多人给你答案。4.实在不行可以在社区提问,但是,请不要以【tomcat部署项目后 启动后会出错】这种风格的文字作为标题,太不具体,将根异常作为题目也比这个题目好,比如:【tomcat启动错误:Exception.XXX.XXX.XXXX.....】,只有当一句话已经无法描述具体错误的情况下,才能使用笼统的、不具体的表述。希望会给你一些帮助

小旋风柴进 2019-12-02 01:56:45 0 浏览量 回答数 0

回答

当程序检测到用户试图下棋的坐标点已经有棋子时,并没有提供相应的处理,而是简单地抛出了一个异常。这种处理方式虽然简单,但Java运行时接收到这个异常后,还需要进入相应的catch块来捕获该异常,所以运行效率要差一些。而且用户下棋重复这个错误完全是预料的,所以程序完全可以针对该错误提供相应的处理,而不是抛出异常。必须指出:异常处理机制的初衷是将不可预期异常的处理代码和正常的业务逻辑处理代码分离,因此绝不要使用异常处理来代替正常的业务逻辑判断。另外,异常机制的效率比正常的流程控制效率差,所以不要使用异常处理来代替正常的程序流程控制。

星尘linger 2020-04-12 10:04:35 0 浏览量 回答数 0

回答

throw new RuntimeException(msg);用try catch 捕获异常e.getMessage();###### 异常会一层一层往上抛,没有返回值。###### 方法的出口一种是return,另一种是抛出异常,抛出异常的情况下是没有返回值的###### 抛出异常,调用这个方法的代码,要么catch异常,要么异常继续往上层调用者抛,根本没有机会让你接收返回值###### 这的看情况,运行时异常不会导致程序中断,还会继续执行,那么就会有返回值,非运行时异常程序直接中断了,所以就不存在返回值一说了,如果你对异常没进行捕捉也是没有的 ![image.png](https://ucc.alicdn.com/pic/developer-ecology/114e31bd8db64317a29ff9f5d933a6ee.png)

因为相信,所以看见。 2020-05-25 20:40:39 0 浏览量 回答数 0

问题

重构:Java特别的接口修改:在throws子句中添加一个异常?报错

因为相信,所以看见。 2020-05-27 10:00:04 5 浏览量 回答数 1

问题

MQTT连接异常: 异常码 3. 消息:代理程序不可用 . 具体原因:null. 异常:代理程序不可用 (3)

牙线 2019-12-01 19:55:27 5466 浏览量 回答数 1

回答

"线程组处理异常的默认流程如下。 (1)如果该线程组有父线程组,则调用父线程组的uncaughtException()方法来处理该异常。 (2)如果该线程实例所属的线程类有默认的异常处理器(由 setDefaultUncaughtExceptionHandler()方法设置的异常处理器),那么就调用该异常处理器来处理该异常。 (3)如果该异常对象是ThreadDeath的对象,则不做任何处理;否则,将异常跟踪栈的信息打印到System.err错误输出流,并结束该线程。"

星尘linger 2020-04-12 16:28:22 0 浏览量 回答数 0

问题

10个Java异常的常见问题:报错

kun坤 2020-06-09 11:37:57 3 浏览量 回答数 1

回答

JFinal 异常处理采用如下设计原则:1:尽可能地使用RuntimeException,使代码干净整洁。2:集中式统一处理异常,使架构简洁清晰。具体到代码,请看`ActionHandler `这个类,几乎所有异常都在这里处理。`Handler在ActionHandler`之外,所以这部的异常在JFinalFilter中处理。 除此之外,由于一些特定的需求,有些地方需要对异常进行单独处理,例如 JFinal 声明式事务,需要对原子操作内的所有异常进行捕获并做 rollback 处理。即便如此,异常在此处被捕捉到以后仍然会再次抛出到 ActionHandler 这个集中处理的地方统一处理并做日志。

小旋风柴进 2019-12-02 02:39:36 0 浏览量 回答数 0

回答

常见的web项目,在service层及以下try catch已知异常并合理处理并记录,对于不可预见的异常向上抛出,在controller最外层统一对异常进行try catch处理,包括错误码及错误描述的封装等等。异常处理的原则:能预见并能够处理的及时try catch处理,其他的异常建议继续向外抛出。在逻辑的最外层做一层统一异常处理层。

bokunlll 2019-12-02 01:55:08 0 浏览量 回答数 0

回答

类型不存在异常。当应用试图以某个类型名称的字符串表达方式访问该类型,但是根据给定的名称又找不到该类型是抛出该异常。该异常与ClassNotFoundException的区别在于该异常是unchecked(不被检查)异常,而ClassNotFoundException 是checked(被检查)异常。

montos 2020-05-26 17:13:43 0 浏览量 回答数 0

回答

异常开销大。异常不建议用于逻辑控制,异常用于无法控制的事情发生,比如网络连接中断。如果这个错误可以用code解决,就不要用异常。你可以从effective java中找到这个规范。######异常只为异常情况而生######用户名和密码不对属于业务层面,不要用异常来处理######这个应该不是业务层的问题,我可以用不同的异常来说明用户验证的不同情况,我是想问异常与code那个用在这儿那个更消耗系统资源######异常更加消耗资源,异常在生成的过程中会使用fillStack的本地方法来生成栈信息,同时加锁当前栈。如果你想避免这个开销同时又不在乎栈信息的话,重写一下这个方法返回this即可,在和错误码的表述方式比较,重写后的性能基本上差不多,属于一个数量级。######异常 通常不参与业务逻辑 当然 对于奇葩需求也是可以参与业务逻辑的,用户检验系统中无处不在,为什么不写一个借口,返回一个布尔值######但是通常返回一个布尔值是满足不了需求的,用户验证中不仅有验证是否成功还会有导致不成功的原因,这样的话一个单单的布尔值是无法满足的######可以是字符串嘛 只是一个举例而已

kun坤 2020-06-08 16:20:10 0 浏览量 回答数 0

回答

SpringMVC统一异常处理,报异常后不跳转至设置的错误页面代码报了java.lang.StringIndexOutOfBoundsException异常,在方法上也抛出了异常上面是DispatcherServlet的异常配置点击登录运行到下图中的位置会报异常,我这是$.post访问,像ajax一样 答案来源网络,供您参考

问问小秘 2019-12-02 02:13:06 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 阿里云双十一主会场 阿里云双十一新人会场 1024程序员加油包 阿里云双十一拼团会场 场景化解决方案 阿里云双十一直播大厅