• 关于

    异常处理程序是什么

    的搜索结果

问题

Java异常的抛出问题

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

回答

这几个问题回答起来没什么意思,我主要分析分析面试官为什么问你这几个问题。问题 1 主要应该是想了解你对调用其他程序或接口时出现的异常情况是如何处理的,毕竟程序的运行并不总是一帆风顺,如果由于其他的接口出现了问题,而你没有处理好这些问题继而引发你写的程序出错或崩溃,那确实不是一个优秀的程序员所做的。程序员不仅应该了解用户按常理出牌,按既定路线完成程序的情况,还应该做好发生各种异常情况的处理。问题 2 主要应该是想了解你是怎样评估你写的程序的,是通过怎样的手段了解的程序的运行情况,是如何优化你的程序的。实现功能并不是程序员的唯一目标,在实现功能的情况下做一个优秀的、高效的程序也是一项艰巨的工程。问题 3 主要应该是想了解你对程序体系结构,或者说是架构的理解,程序不是简单的代码堆积,是有思想线路支撑,有模块协作分工的。作为程序员,虽然可能不会去实际写某一块的东西,但是至少应该了解这些模块的功能以及所有模块之间的联系和他们是如何协作工作的。就好比实现一个接口,你需要处理输入,进行逻辑判断,数据库操作,遇到错误的响应,返回结果等等,这里每一块都是相当细致的。

a123456678 2019-12-02 03:03:23 0 浏览量 回答数 0

问题

[@talishboy][¥20]java异常处理分水岭怎么看。

1035302957750994 2019-12-01 19:32:42 1412 浏览量 回答数 7

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

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

回答

默认情况下,所有用户定义的异常都应继承自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

问题

Windows Phone 7 - 如何退出程序:报错

kun坤 2020-06-20 11:52:16 1 浏览量 回答数 1

回答

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

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

回答

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

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

问题

jav异常处理应该在哪里处理? 400 报错

爱吃鱼的程序员 2020-06-03 13:53:55 2 浏览量 回答数 1

问题

这该是多么蛋疼的设计 :报错

kun坤 2020-06-06 18:51:18 0 浏览量 回答数 1

问题

这该是多么蛋疼的设计 403.10 禁止访问:配置无效 

kun坤 2020-05-27 11:30:11 1 浏览量 回答数 0

问题

linux多线程网络编程客户端异常断开怎么处理?

a123456678 2019-12-01 19:56:34 964 浏览量 回答数 1

问题

业务流程我们是用try{}catch{}来控制,还是用if()来控制?

蛮大人123 2019-12-01 20:13:44 1132 浏览量 回答数 2

问题

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

kun坤 2020-06-09 11:37:57 3 浏览量 回答数 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

回答

先说一下AOP是干什么呢, AOP是面向切面的编程, 通过AOP可以将业务的各个部分进行隔离,从而是各个部分耦合度降低。常用于做日志记录,性能统计,安全控制,事务处理,异常处理等。 接着再介绍几个概念:Joint point:表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。Pointcut:表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。Advice:Advice 定义了在 pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码Advisor: 通知器, 包括通知和切点 结合上面的概念再来看楼主的例子就比较清晰了 定义了切点, 即要拦截哪些操作。 这个例子就是说要拦截com.ace.service.impl这个包下的所有以Impl结尾的所有public方法。 定义了通知器, 该通知器指定了刚刚说的那个切点, 还指定了基于这个切点要做什么操作, 具体的操作逻辑在txAdvice中。

慕之 2019-12-02 01:57:37 0 浏览量 回答数 0

回答

我们可以使用三种方法来处理多个异常。 第一种方法需要把所有可能发生的异常放到一个元组里。像这样: try: file = open('test.txt', 'rb') except (IOError, EOFError) as e: print("An error occurred. {}".format(e.args[-1])) 另外一种方式是对每个单独的异常在单独的except语句块中处理。我们想要多少个except语句块都可以。这里是个例子: try: file = open('test.txt', 'rb') except EOFError as e: print("An EOF error occurred.") raise e except IOError as e: print("An error occurred.") raise e 上面这个方式中,如果异常没有被第一个except语句块处理,那么它也许被下一个语句块处理,或者根本不会被处理。 现在,最后一种方式会捕获所有异常: try: file = open('test.txt', 'rb') except Exception: # 打印一些异常日志,如果你想要的话 raise 当你不知道你的程序会抛出什么样的异常时,上面的方式可能非常有帮助。

montos 2020-04-16 20:44:09 0 浏览量 回答数 0

回答

先来看一段创建文件并写入文本的代码,然后作介绍。 ? 1234567891011121314151617181920212223242526272829303132333435 !/usr/bin/env python 'makeFile.py -- create a file' import os ls = os.linesep get filename while True: fname = raw_input('Input an unused file name >') if os.path.exists(fname): print "ERROR: '%s' already exists" %fname else: break get file content lines all = [] print "nEnter lines (input '.' to quit).n" loop until user terminates input while True: entry = raw_input('>') if entry == '.': break else: all.append(entry) write lines to file with proper line-ending fobj = open(fname, 'w') fobj.writelines(['%s%s' %(x, ls) for x in all]) fobj.close() print 'DONE' if name == '__main__': print 'innter module' 上面的代码用来创建一个新文件并写入文本,第6行给os模块中的linesep起了给别名ls,这样做的好处一方面简化了长长的变量名,另一方面也是主要原因用于提高代码性能,因为访问这个变量时首先要检测os模块,然后再解析linesep,linesep是行结束符标志,linux下是'r',windows下是'rn',用本地变量保存更好。第34行使用了__name__,这主要用于代码内测试,它的值是__main__,但python文件通常作为模块被其它文件import,这时__name__的值是这个模块名,就不会执行模块内的测试代码了。 ? 123456789101112131415161718 !/usr/bin/env python 'readFile.py -- read and display file' get filename fname = raw_input('Enter filename >') print attempt to open file for reading try: fobj = open(fname, 'r') except IOError, e: print "* file open error:", e else: # display contents to the screen for eachLine in fobj: print eachLine, fobj.close() 上面的代码用来读文件并显示其内容到屏幕上,使用了try-except-else异常处理机制。 这里简单介绍下try的工作原理:当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。 1、如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。 2、如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。 3、如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。 总结 以上就是本文关于分享一个简单的python读写文件脚本的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

xuning715 2019-12-02 01:10:29 0 浏览量 回答数 0

回答

只有十个线程处理数据?还是每次都创建10个线程? 十分钟没处理完就处理下一个数据,怎么会抛出异常?处理完数据后,线程是处于挂起状态,还是线程结束了? 线程安全方面,你还需要多考虑考虑 内存泄露,可能是你的的工作方法里创建的线程,对象等东西没有得到释放 解决方法:检查你的程序资源有没有被复用:线程可以用线程池,对象可以用对象池 引用来自“linxyz”的评论 只有十个线程处理数据?还是每次都创建10个线程? 十分钟没处理完就处理下一个数据,怎么会抛出异常?处理完数据后,线程是处于挂起状态,还是线程结束了? 线程安全方面,你还需要多考虑考虑 引用来自“linxyz”的评论 只有十个线程处理数据?还是每次都创建10个线程? 十分钟没处理完就处理下一个数据,怎么会抛出异常?处理完数据后,线程是处于挂起状态,还是线程结束了? 线程安全方面,你还需要多考虑考虑程序设计就有问题,去查查JAVA的 ThreadPoolExecutor,ScheduledThreadPoolExecutor等几个类 看看这样作能停止么。 http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html 先用jmap拿到dump文件进行分析 引用来自“茶壶”的评论 看看这样作能停止么。 http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html 引用来自“茶壶”的评论 看看这样作能停止么。 http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html 哈哈,本来以为没有什么来着是吧。

爱吃鱼的程序员 2020-06-14 15:17:04 0 浏览量 回答数 0

问题

winform程序运行一段时间报错,弹出一框提示,是什么原因 ?报错

爱吃鱼的程序员 2020-06-24 14:06:17 0 浏览量 回答数 1

问题

多个ECS同时云盾报警

zazido 2019-12-01 19:04:20 212 浏览量 回答数 1

问题

onscONSClient4CPP.dll运行时报错求助

永超 2019-12-01 21:53:20 3941 浏览量 回答数 2

回答

回 1楼无衣蒹葭的帖子 是这样的,我是一个服务器要一直获取用户传来的资源进行处理再回送 但是如果我在中途进行aos_http_io_deinitialize(); 程序就相当于返回到更高一级的线程,在那个线程里通过批处理去掉cmd如果异常 批处理会终止 不进行aos_http_io_deinitialize();的话 会在当前子线程模块运行 能确保程序的正确运行 ------------------------- 回 1楼无衣蒹葭的帖子 我没有采取外调 exe方式 而是直接把sdk代码加到我原有的代码里了 ------------------------- 回 1楼无衣蒹葭的帖子 只调用aos_pool_destroy(p);不调用aos_http_io_deinitialize();会有什么问题? 或者有没有其他的办法 不让程序回到更高一级? ------------------------- 回 5楼无衣蒹葭的帖子 嗯,确实是多线程,那样的话如果在主函数循环里进行清理会影响到其他线程的处理对吧? ------------------------- 回 5楼无衣蒹葭的帖子 是不是只要运行一次aos_http_io_deinitialize last就可以全部清理 我在主循环里设置一个空闲的期间 然后进行 aos_http_io_initialize("oss_test", 0); aos_http_io_deinitialize(); 两句 这样行嘛? ------------------------- 回 5楼无衣蒹葭的帖子 我试了一下,发现只要我加了aos_http_io_deinitialize(); 程序就错了= =!!! 后面调系统命令只要异常就不会继续执行了 不知道这是什么情况。。。 ------------------------- 回 9楼无衣蒹葭的帖子 这个问题蛮蛋疼的。。只要我用aos_http_io_initialize cmd就会回到主线程状态 出异常就直接错了 哪怕只是删一个不存在的文件夹。。都不会继续执行批处理了 ------------------------- 回 9楼无衣蒹葭的帖子 只调aos_pool_destroy(p) 不调aos_http_io_initialize 然后 定期重启整个程序 会不会有什么危害? 从目前的状态来看 我确实不能调aos_http_io_initialize。。。除非我把整个osssdk单独做一个进程去调用 ------------------------- ReCSDKOSS不清理运行环境会怎样? 确实每次上传下载内存都有少量的增长

九日王朝 2019-12-02 01:28:29 0 浏览量 回答数 0

回答

你错误了理解了异常处理机制.php早期版本根本就没有异常处理机制.异常的出现是跟反射同时出现的.之前的代码都是用错误处理函数来抛出错误等级.由错误处理函数接收之后加以分析处理.代码采用的更多是流水线式的结构.后来为了完善对于oo思想编程的实现,不断加入了异常机制,完善了接口,克隆,反射,以及多态特性.总之,php里用多态有点不伦不类,接口还马马虎虎.克隆在新的底层实现下就变的必不可少.由于对oo思想的跟进,后来有不断出现了命名空间.这个重要是为了实现闭包特性,延迟绑定.类的访问权限控制以及继承权限的控制.说多了.总之很多特性都是为了实现对oo思想的支持.其实没有oo,利用早期版本提供的特性一样可以写出符合需求的代码. zf2  echo1/0; 试试,能不能捕获回复<aclass='referer'target='_blank'>@leo108:求写法...回复<aclass='referer'target='_blank'>@liet:可以,set_exception_handler可以不用try,catch就throw一个异常么?兄台throw 专门抛出异常的, 没有被捕获和能不能抛出异常是两码事.我看框架里代码没有try,catch直接if判断了下就thrownew一个异常,我直接throw他就报错 兄台啊,别偷换概念。 框架里抛出的异常不用try..catch,直接就可以throw 说得好像异常要try..catch才能throw抛的一样。。抛是抛,捕获是捕获,两码子事干嘛扯到一起?本来就不应该在一起,我完全可以在A页面抛,B页面捕获。要是try..catch..throw在一起那才叫扯淡呢,那就是脱裤子放屁了。 异常抛出了就必须要捕获,但不是说异常抛出了就必须马上去捕获。好比吃完饭必须要拉屎(不拉难道全部消化?从皮肤排出来?),但不是说吃完饭就必须马上去拉屎,我可以稍后去。 core/lib/db/mysqli.class.php抛异常<preclass="brush:php;toolbar:true;auto-links:false;">publicfunctionconnect($config){$this->dbLink=mysqli_init();$this->dbLink->real_connect($config['host'],$config['login'],$config['password'],$config['database'],$config['port']?intval($config['port']):3306,'',MYSQLI_CLIENT_FOUND_ROWS);if(mysqli_connect_errno()){thrownewBaseException("数据库连接失败",1001);}if($config['charset']){$this->dbLink->query("SETNAMES'{$config['charset']}'");}return$this->dbLink;} <spanstyle="font-size:10pt;line-height:1.5;">/hi/index.php框架总入口,捕获异常 <preclass="brush:php;toolbar:true;auto-links:false;">publicfunctionrun(){try{$this->route();$this->Controll();}catch(BaseException$e){$e->errorMessage();}}比喻很形象啊 <spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:15px;line-height:22px;background-color:#FFFFFF;">try..catch是不受用户控制的系统异常时后自动抛出,<spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:15px;line-height:22px;background-color:#FFFFFF;">throw想抛就抛即使程序没有异常,都可以用<spanstyle="color:#FF6600;font-family:微软雅黑,Verdana,sans-serif,宋体;line-height:normal;background-color:#FFFFFF;">set_exception_handler指定的函数处理,这样可以更好的处理程序的未知问题;; <spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:15px;line-height:22px;background-color:#FFFFFF;">比如说某个核心参数变量的值只能为‘a或者b,但是不知道什么原因变成c了这时候程序不能处理必须提前终止程序try就无能为力了。这时候代码可能没有任何问题,但是从逻辑上来说会出现不可控因素一般就手动<spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:16px;line-height:22px;background-color:#FFFFFF;">throw <spanstyle="line-height:22px;">

爱吃鱼的程序员 2020-06-22 13:58:12 0 浏览量 回答数 0

问题

SLB 端口检测的socket包内容是什么

cfca 2019-12-01 19:42:54 1734 浏览量 回答数 2

回答

对症下药啊,是什么原因不能访问的你自己也不知道?那怎么提交工单给客服处理啊。是你程序原因,还是说有人攻击你,看看后台有没有异常

糖叔 2019-12-02 00:59:13 0 浏览量 回答数 0

问题

ECS Windows2008系统IIS站点限制内存方法是什么

boxti 2019-12-01 21:30:36 1196 浏览量 回答数 0

回答

" 找到问题了,我在excepTest方法中抛出异常,然后该方法上抛了异常 该异常被抛给了run方法,应该在run方法内处理该问题 但是代码中的查找捕获却在main方法中,肯定捕获不到异常 修正后代码: class Test22_05 implements Runnable{ public void run() { for(int i = 0; i < 10; i++){ try{ this.excepTest(i); }catch(Exception e){ System.out.println(Thread.currentThread().getName() + "出现异常:" + e); } System.out.println(Thread.currentThread().getName() + ":i = " + i); } } public void excepTest(int i)throws Exception{ if(i == 8){ throw new Exception("这是手动抛出异常!"); } } } public class JavaTest22_05{ public static void main(String args[]){ Test22_05 t1 = new Test22_05(); Thread tt1 = new Thread(t1); Thread tt2 = new Thread(t1); Thread tt3 = new Thread(t1); tt1.setName("线程1"); tt2.setName("线程2"); tt3.setName("线程3"); tt1.start(); tt2.start(); tt3.start(); tt1.start(); //本行将报错,因为线程只能启动一次 } } //本例中是将上抛异常和捕获异常写到多线程代码里面 //目的是实现当i为8时手动抛出异常 //基本上实现了,但是不知道为什么,三个线程处理了30条记录,不符合Runnable接口的共享资源特征 //将在JavaTest22_06.java中重写程序,试图找出问题。 ###### 别的线程是不能直接抛异常出去的,你想想线程本身就是异步的,你执行线程的时候,主线程的方法早就跑完了###### 你要是用IDE工具的话 一准提示你 this.excepTest(i); Unhandled exception type Exception###### 没看明白你想问什么。。。" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/8ba587a88d1c4554aa5a9b953d1b42e6.png)

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

问题

java自定义异常类 ,当程序走到这里的时候 ,页面的控制台报错信息是500 ?报错

爱吃鱼的程序员 2020-06-23 13:54:17 0 浏览量 回答数 1

问题

ECS Windows端口异常占用的处理方法是什么

boxti 2019-12-01 22:10:16 1233 浏览量 回答数 0

问题

各种流行的编程风格? 400 报错

爱吃鱼的程序员 2020-06-04 15:18:42 1 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站